EF5: ডাটাবেস '} 1 database' হিসাবে '{0}' ফাইলটি সংযুক্ত করা যায় না


140

আমি এখানে বর্ণিত হিসাবে সঠিক সমস্যাটির মুখোমুখি হচ্ছি ("মোছা এমডিএফ ফাইল সংযুক্ত করতে পারি না" বিভাগটি পড়ুন) তবে সমস্যার সমাধানটি সেখানে বলা হয়নি ...

সংক্ষেপে সমস্যাটি হ'ল .mdfফাইলটি মোছার পরে , যখন আমি EF 5.0 ব্যবহার করে ডিবি অ্যাক্সেস করার চেষ্টা করি তখন নিম্নলিখিত ব্যতিক্রম নিক্ষেপ করা হয়।

ডেটা এক্সেপশন-> সত্তা এক্সেপশন-> স্কেলএক্সসেপশন:
'{0}' ফাইলটি ডাটাবেস '{1}' হিসাবে সংযুক্ত করা যায় না

আমি ডিবি ফাইলটি মুছতে পেরেছি এবং অ্যাপ্লিকেশনটি চালুর সময় এটির প্রাথমিক ব্যবহার করার প্রত্যাশা করে আমি সেই বাজে ত্রুটি বার্তাটি পাই। এটা সমাধান করার জন্য কোন রাস্তা আছে?


1
দুঃখিত, আমি একটি নির্দিষ্ট উত্তর সরবরাহ করি নি, কিন্তু সেই সময়টিতে আমার কাছে এমন কোনও সমাধান ছিল না যা সময়ের সাথে 100% কাজ করে। আমি ব্যবহারকারী সংযুক্ত ডেটাবেস ব্যবহার না করে এখন ত্রুটি এড়াতে চেষ্টা করি। আমি সাধারণত এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওর সাথে সংযোগ করে এবং ত্রুটিতে ডেটাবেস পৃথক করে ত্রুটিটি সমাধান করতে পারি।
ওদেটোকোড

সমস্যাটি হ'ল ডেটাবেসটির আর অস্তিত্ব নেই কারণ আমি ইতিমধ্যে ফিজিকাল ফাইলটি মুছে ফেলেছি। আমি আসলে এটির একটি স্টুডিওতে দেখাশোনা করার চেষ্টা করেছি (ভিএস এবং বাহ্যিক ক্ষেত্রে সংহত)। আমার উত্তরটি আসলে কোনও সমাধান নয়, বরং একটি কর্মপরিকল্পনা, এটি কেবল আপনাকে বলে যে আপনাকে লোকালডিবিতে আটকে থাকতে হবে না।
শিমি ওয়েটজ্যান্ডলার

EF বিশেষজ্ঞ রোয়ান মিলার থেকে - romiller.com/2013/05/17/… দেখুন আমরা পরবর্তী ভিএস সংস্করণে আরও ভাল সমাধান সরবরাহ করার আশাবাদী।
রিকঅ্যান্ডএমএসএফটি

একটি দরকারী সমস্যা সমাধানের গাইড: odetocode.com/blogs/scott/archive/2012/08/15/…
টিম

উত্তর:


220

আপনি যদি ডিবি ফাইলটি মুছে ফেলেন তবে এটি স্কেললোকালডিবিতে নিবন্ধিত থাকে। কখনও কখনও এটি ডিবি মোছার জন্য এটি ঠিক করে। আপনি কমান্ড লাইন থেকে এটি করতে পারেন।

  1. আপনার প্রারম্ভিক / প্রোগ্রাম মেনুতে "ভিজুয়ালস্টুডিওর জন্য বিকাশকারী কমান্ড প্রিপশন" খুলুন।
  2. নিম্নলিখিত আদেশগুলি চালান:

    sqllocaldb.exe stop v11.0

    sqllocaldb.exe delete v11.0


1
আমি এসকিএল সার্ভার অবজেক্ট এক্সপ্লোরারটি পাইনি, আমার ধারণা, কারণ আমি ভিএস 2012 এক্সপ্রেস ব্যবহার করছি। সুতরাং, আমি গৃহীত উত্তরটি চেষ্টা করতে পারি না। তবে আপনার উত্তরটি আমার পক্ষে নিখুঁতভাবে কাজ করেছে। ধন্যবাদ।
নিউম্যান

3
আপনার উত্তর সবেমাত্র আমাকে রক্ষা করেছে। আমার কাছে গ্রহণযোগ্য উত্তর থেকে (লোকালডিবি) \ v11.0 সাবনোড নেই এবং আমি এসকিউএল ম্যানেজমেন্ট স্টুডিও থেকে রেফারেন্সগুলি সরাতে পারিনি, আপনার জন্য হুররে!
সানটাক্স

18
ফাইলগুলি মুছে ফেলার পরে এটি আমার পক্ষে কাজ করেছিল। আপনি সরঞ্জামগুলি -> গ্রন্থাগার প্যাকেজ ম্যানেজার -> প্যাকেজ ম্যানেজার কনসোল থেকে কমান্ডও চালাতে পারেন।
বার্ট ভেরকোইজেন

11
পার্শ্ব-নোট হিসাবে, এটি v11.0এসকিউএল লোকালডিবি 2012 -এর সাথে সুনির্দিষ্ট। আপনি যদি লোকালডিবি 2014 ব্যবহার করছেন তবে এমএস এর MSSqlLocalDbপরিবর্তে নামকরণ করে ।
কোডিংবিথস্পাইকে

4
উপরের মন্তব্যের সাথে আপনি কোনও ডিবি নামও প্রবেশ করতে পারবেন না এবং এটি কেবল আপনার ডিফল্টর ক্ষেত্রে প্রযোজ্য হবে, আমি নীচে vs2015 ব্যবহার করেছি এবং এটি কাজ করেছে: sqllocaldb.exe বন্ধ করুন sqllocaldb.exe মুছুন
ডিভিনি

147

যারা এখনও সমাধানের সন্ধান করছেন তাদের জন্য ...

ভিউ / এসকিউএল সার্ভার অবজেক্ট এক্সপ্লোরার এ যান এবং (লোকালডিবি) \ v11.0 সাবনোড থেকে ডাটাবেস মুছুন!
এখানে চিত্র বর্ণনা লিখুন

ফাইলগুলি কোথায় হওয়া উচিত সে সম্পর্কে মূলত একটি স্থানীয় ডাটাবেস রয়েছে এবং আপনি যদি ডাটাবেস ফাইলগুলি মুছতে চান তবে নিশ্চিত করুন যে আপনি এগুলি এক্সপ্লোরার ইউটিলিটি থেকে ম্যানুয়ালি নয় remove


এই আমাকে একবার বিট করুন, দ্বিতীয়
বারটি

8
এছাড়াও, যদি আপনি এটি দেখতে না পান। কেবল একটি নতুন সংযোগ যুক্ত করুন এবং "(লোকালডিবি) \ v11.0" (উইন্ডোজ এথ সহ) প্রবেশ করুন। এটি সহজ বলে মনে হতে পারে তবে আমি সেখানে কিছুক্ষণের জন্য আমার পর্দায় ঘুরে দেখছিলাম। :)
পিটার

@ পিটার ওকে, ডাটাবেস যুক্ত হয়েছে এবং এখন আমি আমার 2 টি প্রসঙ্গ দেখতে পাচ্ছি। আমি এই ভিউ থেকে মুছলে আমি একটি নতুন ত্রুটি পেয়েছি: 'এই ডাটাবেসের জন্য ডেটা অ্যাক্সেসের স্তরটি পুনরুদ্ধার করতে পারে না'। কমান্ড প্রম্পট ব্যবহার করে আমি এটির কাছাকাছি যেতে সক্ষম হয়েছি।
nVentimiglia

1
EF6- এর ডিফল্ট সংযোগ কারখানাটি ব্যবহার করার সময়, আপনি পরিবর্তে এমএসকিউএলোক্যালডিবি ব্যবহার করতে পারেন। সার্ভারটি (লোকালডিবি) ss mssqllocaldb তে পরিবর্তন করুন এবং দেখুন যে এটি সংযোগ করে কিনা। লোকালডিবি এর বেশ কয়েকটি সংস্করণ রয়েছে এবং একটি আপনাকে সমস্ত প্রদর্শন করে না।
জিম ইয়ারব্রো

এছাড়াও, আমি কী অভিজ্ঞতা পেয়েছি: সংযোগ বিচ্ছিন্ন করে ক্লিক করুন এবং তারপরে আপনি যদি আপনার ডাটাবেসটি না দেখেন তবে আবার সংযোগ করুন। (রিফ্রেশ সাহায্য করবে না)
স্টেফানজি

19

আমি প্রথমে জাসোবেলের সমাধানটি চেষ্টা করেছিলাম কিন্তু আমার তালিকাভুক্ত ডাটাবেসটি দেখতে পাইনি। আমি ভিএস বিকাশকারী কমান্ড প্রম্পট থেকে কোডিংউইথস্পাইকের আদেশগুলি চালিত করেছি, তবে এটি কার্যকর হয়নি। অবশেষে প্যাকেজ ম্যানেজার কনসোল থেকে কোডিংবিথস্পাইকের একই কমান্ডগুলি চালিয়েছিলাম এবং এটি কাজ করেছিল।

    PM> sqllocaldb.exe stop v11.0
    LocalDB instance "v11.0" stopped.

    PM> 
    PM> sqllocaldb.exe delete v11.0
    LocalDB instance "v11.0" deleted.

    PM> sqllocaldb.exe start v11.0
    LocalDB instance "v11.0" started.

9

ঠিক আছে.

আমার সমাধানটি সহজ ছিল, আমি স্থানীয় সার্ভারটি ব্যবহার করে পরিবর্তন করেছি:

আমি DataSourceথেকে সংযোগের স্ট্রিংয়ের বৈশিষ্ট্যটি পরিবর্তন করেছি :

Data Source=(LocalDb)\v11.0;blah

প্রতি:

Data Source=.\SQLEXPRESS;blah

আর একটি সমাধান হ'ল এসকিউএল ম্যানেজমেন্ট স্টুডিওর মাধ্যমে লোকালডিবিতে লগইন করুন এবং সেই ডাটাবেসটি মুছতে চেষ্টা করুন:

এখানে চিত্র বর্ণনা লিখুন

তবে এটি আমার পক্ষে কার্যকর হয়নি, যখন আমি এটি মুছার চেষ্টা করি তখন এটিতে "TITLE: মাইক্রোসফ্ট এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিও

ডাটাবেস '{0}' সার্ভারে বিদ্যমান নেই। (SqlManagerUI)

আমি যখন এটি আলাদা করার চেষ্টা করি তখন ডেটাবেস বিচ্ছিন্ন নির্বাচনের তালিকায় উপস্থিত হয় না, "অফলাইন নিন" আমাকেও উপরের ত্রুটির দিকে নিয়ে যায়।

যা আমাকে ভাবতে পরিচালিত করে এটি লোকালডিবি-র একটি শক্ত বাগ।



লোকালডিবি'র সুবিধা রয়েছে যে আপনি এটি আইআইএস এক্সপ্রেসের মতো প্রশাসক প্রাইভেলিজগুলির প্রয়োজন ছাড়াই আপনার স্থানীয় অ্যাকাউন্টের অধীনে চালাতে পারবেন। এটি প্রতিটি পৃথক ব্যবহারকারীর জন্য আইআইএস বা এসকিউএল সার্ভার স্থাপন না করেই অনেকগুলি ডিভের সাথে প্রকল্পগুলি ভাগ করতে দেয়।
বার্ট ভেরকোইজেন

4

সবচেয়ে সহজ সমাধানটি হ'ল সংযোগের স্ট্রিংয়ে কেবল আপনার ডিবিটির নাম পরিবর্তন করা। বিকল্প সমাধানের জন্য রোয়ান মিলার্স ব্লগটি ভিজ্যুয়াল স্টুডিও 2012 থেকে কীভাবে একটি ডেটাবেস ড্রপ করবেন তা দেখুন । আমরা আশা করি ভবিষ্যতের সংস্করণে এই সমস্যাটি সমাধান করা হবে।


2

সর্বোত্তম এবং সহজ উত্তর আমি এখনই এটি সমাধান করেছি, কেবলমাত্র আপনার এসকিএল সার্ভারের নামটি ডেটা উত্স হিসাবে ব্যবহার করুন, প্রাথমিক ক্যাটালগটি আপনার ডাটাবেসের নাম এবং সেখানে আপনি এমডিএফ লাইনটি সরিয়ে ফেলুন


1

আমার ক্ষেত্রে আমি মাইগ্রেশন ব্যবহার করি এবং কনফিগারেশনে আমি কেবল ডেটা কনটেক্সট এবং ডেটা কনটেক্সট ক্লাসের নাম পরিবর্তন করেছিলাম (কেবল নতুন নাম), তারপরে আবার চেষ্টা করুন এবং এটি সাহায্য করেছে


1

এসকিউএল ২০১৪ এর জন্য দয়া করে কোডিংবিথস্পাইকে নির্বাচিত উত্তর এবং এই মন্তব্যটি অনুসরণ করুন

একটি পার্শ্ব-নোট হিসাবে, v11.0 এসকিউএল LocalDB 2012 নির্দিষ্ট আপনি LocalDB 2014 ব্যবহার করে থাকেন, মাইক্রোসফট এটি নতুন নামকরণ হয় MSSqlLocalDb পরিবর্তে। - কোডিংবিথস্পাইকে 29 ই আগস্ট '14 এ 19:20


সহায়ক দিক নোট, আমি ভিএস 2015 আরও তথ্য সহ এটি একটি পুরানো প্রকল্পে কাজ করার মুখোমুখি । এছাড়া থেকে বনাম 2013 সালে অনুরূপ পরিবর্তন v11.0করতে ProjectsV12 । কমপক্ষে আমার মেশিনে :-)।
লক্ষ্য করুন

0

আমার একই সমস্যা ছিল এবং আমি আমার অ্যাপ্লিকেশন বাইনারিগুলির অন্য ফোল্ডারে ম্যানুয়ালি "ডেটা ডিরেক্টরী" ফোল্ডারটি সেট করে সমাধান করেছি।

আমি এই লাইনটি গ্লোবাল.এক্স অ্যাপ্লিকেশন_সার্ট পদ্ধতিতে রেখেছি:

AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "App_Data"));

আমার সংযোগ স্ট্রিং বর্তমানে এটিতে সেট করা হয়েছে:

<connectionStrings>
    <add name="DataContext" connectionString="Data Source=(LocalDb)\v11.0; Initial Catalog=DataContext; Integrated Security=True; MultipleActiveResultSets=True; AttachDbFilename=|DataDirectory|DataContext.mdf"
  providerName="System.Data.SqlClient" />


আমি এটি পরীক্ষা করিনি, তবে সম্ভবত এটি কাজ করা উচিত নয়। কারণ DataDirectoryইতিমধ্যে স্থানীয়ভাবে App_Dataডিফল্ট হিসাবে সেট করা আছে , সুতরাং স্পষ্টভাবে আগে পরিবর্তন না করা থাকলে আপনার কোড কিছুই করে না।
শিমি ওয়েটজ্যান্ডলার

আপনি যদি এই পদ্ধতির সাথে যান তবে ডিরেক্টরিটি পরিবর্তন করবেন না, MDF ফাইলের নাম পরিবর্তন করুন। এছাড়াও, romiller.com/2013/05/17/… দেখুন
রিকআ্যান্ডএএমএসএফটি

0

আমি আমার সংযোগ স্ট্রিংয়ে ডেটাবেস নাম পরিবর্তন করে এটি ডিফল্ট এ্যাসনেট-{সংখ্যাগুলি থেকে একটি সাধারণ নাম রেখে এটি ঠিক করতে পারি, এটি কাজ করে।


0

SQL সার্ভার ম্যানেজমেন্ট স্টুডিও ব্যবহার করে (লোকালডিবি) \ v11.0 এ সংযুক্ত করুন, ডিবি মুছুন এবং তারপরে প্যাকেজ ম্যানেজার কনসোলে একটি আপডেট-ডাটাবেস করুন।


0

আমারও একই সমস্যা ছিল। আমি প্যাকেজ ম্যানেজার কনসোলে নিম্নলিখিত কমান্ডগুলি চালিত করেছি এবং এটি সমস্যার সমাধান করেছে

sqllocaldb.exe stop MSSqlLocalDb

sqllocaldb.exe delete MSSqlLocalDb
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.