EF5: फ़ाइल को '{0}' डेटाबेस '{1}' के रूप में संलग्न नहीं किया जा सकता


140

मैं यहां बताए गए सटीक मुद्दे का सामना कर रहा हूं (पढ़ें खंड "हटाए गए एमडीएफ फाइल में संलग्न नहीं किया जा सकता है"), लेकिन समस्या का समाधान वहां नहीं बताया गया है ...

संक्षेप में मुद्दा यह है कि .mdfफ़ाइल को हटाने के बाद , ईएफ 5.0 का उपयोग करके डीबी तक पहुंचने की कोशिश करने पर निम्न अपवाद फेंक दिया जाता है।

DataException-> EntityException-> SqlException:
फ़ाइल को {{0} 'डेटाबेस' '1} के रूप में संलग्न नहीं किया जा सकता

मैंने DB फाइल को डिलीट कर दिया है और अब मुझे एप्लिकेशन को चलाने के दौरान यह बुरा एरर मैसेज मिलता है कि यह इनिशियलाइज़र का उपयोग करने की उम्मीद कर रहा है। इसे ठीक करने का कोई उपाय?


1
क्षमा करें, मैंने कोई विशिष्ट उत्तर नहीं दिया है, लेकिन उस समय मेरे पास ऐसा समाधान नहीं था जो 100% समय पर काम करता हो। मैं उपयोगकर्ता संलग्न डेटाबेस का उपयोग नहीं करके अब त्रुटि से बचने की कोशिश करता हूं। मैं आमतौर पर SQL सर्वर प्रबंधन स्टूडियो के साथ जुड़कर और डेटाबेस को त्रुटि में बदलकर त्रुटि को ठीक कर सकता था।
OdeToCode 13

समस्या यह है कि डेटाबेस मौजूद नहीं है क्योंकि मैंने पहले ही भौतिक फ़ाइल हटा दी है। मैंने वास्तव में स्टूडियो (वीएस और बाहरी में एकीकृत) में से एक में इसकी देखभाल करने की कोशिश की। मेरा जवाब वास्तव में एक समाधान नहीं है, बल्कि एक समाधान है, यह सिर्फ बताता है कि आपको लोकलडब से चिपकना नहीं है।
शिम्मी वेइटहैंडलर

ईएफ विशेषज्ञ रोवन मिलर से - romiller.com/2013/05/17/… देखें हम अगले वीएस संस्करण में बेहतर समाधान प्रदान करने की उम्मीद करते हैं।
रिकंडएमएसएफटी

एक उपयोगी समस्या निवारण गाइड: odetocode.com/blogs/scott/archive/2012/08/15/…
टिम एबेल

जवाबों:


220

यदि आप DB फ़ाइल को हटाते हैं, तो यह SqlLocalDB के साथ पंजीकृत रहता है। कभी-कभी यह डीबी को हटाने के लिए इसे ठीक करता है। आप इसे कमांड लाइन से कर सकते हैं।

  1. अपने प्रारंभ / कार्यक्रमों के मेनू के तहत "डेवलपर कमांड प्रोपमप्ट फॉर विजुअलस्टडियो" खोलें।
  2. निम्न आदेश चलाएँ:

    sqllocaldb.exe stop v11.0

    sqllocaldb.exe delete v11.0


1
मुझे Sql सर्वर ऑब्जेक्ट एक्सप्लोरर नहीं मिला, मुझे लगता है कि क्योंकि मैं वीएस 2012 एक्सप्रेस का उपयोग कर रहा हूं। इसलिए, मैं स्वीकार किए गए उत्तर की कोशिश नहीं कर सकता। हालांकि, आपके जवाब ने मेरे लिए पूरी तरह से काम किया। धन्यवाद।
न्यूमैन

3
आपके जवाब ने मुझे बचा लिया। मेरे पास स्वीकृत उत्तर से (लोकल) \ v11.0 सबनोड नहीं था और मैं SQL प्रबंधन स्टूडियो से संदर्भ नहीं निकाल सका, इसलिए आपके लिए हुर्रे!
सैंटक्स

18
फ़ाइलों को हटाने के बाद मेरे लिए यह काम किया। आप टूल्स -> लाइब्रेरी पैकेज मैनेजर -> पैकेज मैनेजर कंसोल से कमांड भी चला सकते हैं।
बार्ट वर्कोइजेन 10

11
साइड-नोट के रूप में, v11.0SQL LocalDB 2012 के लिए विशिष्ट है। यदि आप LocalDB 2014 का उपयोग कर रहे हैं, तो MS ने इसका नाम बदल दिया MSSqlLocalDb
कोडिंगविट्स्पाइक

4
उपरोक्त टिप्पणी के संबंध में आप किसी भी db नाम को दर्ज नहीं कर सकते हैं और यह सिर्फ आपके डिफ़ॉल्ट एक पर लागू होगा, मैंने नीचे vs2015 का उपयोग किया है और इसने काम किया: sqllocaldb.exe stop sqllocaldb.exe delete
Deviney

147

अभी भी एक समाधान के लिए खोज करने वालों के लिए ...

देखने / SQL सर्वर ऑब्जेक्ट एक्सप्लोरर पर जाएं और (localdb) \ v11.0 सबनोड से डेटाबेस को हटा दें!
यहां छवि विवरण दर्ज करें

अनिवार्य रूप से एक स्थानीय डेटाबेस है जहां फाइलें होनी चाहिए, और यदि आप डेटाबेस फ़ाइलों को हटाना चाहते हैं, तो सुनिश्चित करें कि आप उन्हें इस एक्सप्लोरर उपयोगिता से हटा दें, मैन्युअल रूप से नहीं।


यह मुझे एक बार, दूसरी बार था कि मुझे ऑटो माइग्रेशन == झूठी FML
वर्कबाइट

8
इसके अलावा, यदि आप इसे नहीं देखते हैं। बस एक नया कनेक्शन जोड़ें और "(स्थानीयडीबी) \ v11.0" (विंडोज प्रामाणिक के साथ) दर्ज करें। यह सरल लग सकता है, लेकिन मैं वहां थोड़ी देर के लिए अपनी स्क्रीन को घूर रहा था। :)
पीटर

@Peter ठीक है, डेटाबेस जोड़ा और अब मैं अपने 2 संदर्भों को देखता हूं। जब मैं इस दृश्य से हटाता हूं तो मुझे एक नई त्रुटि मिलती है: 'इस डेटाबेस के लिए डेटा एक्सेस स्तर को पुनर्प्राप्त नहीं कर सकता'। मैं कमांड प्रॉम्प्ट का उपयोग करके इसे प्राप्त करने में सक्षम था।
nVentimiglia

1
EF6 के डिफ़ॉल्ट कनेक्शन कारखाने का उपयोग करते समय, आप इसके बजाय mssqllocaldb का उपयोग कर सकते हैं। (LocalDb) \ mssqllocaldb पर सर्वर बदलें और देखें कि क्या कनेक्ट है। लोकलडब के कई संस्करण हैं, और एक आप सभी को नहीं दिखाता है।
जिम यारब्रॉन

इसके अलावा, मुझे क्या अनुभव हुआ: डिस्कनेक्ट पर क्लिक करें और फिर कनेक्ट करें अगर आपको अपना डेटाबेस अब दिखाई नहीं देता है। (रिफ्रेश मदद नहीं करता है)
स्टीफन

19

मैंने पहले JSobell के समाधान की कोशिश की, लेकिन मेरे डेटाबेस को वहां सूचीबद्ध नहीं देखा। मैंने VS डेवलपर कमांड प्रॉम्प्ट से कोडिंगविथस्पीक की कमांड चलाई, लेकिन यह भी काम नहीं किया। अंत में मैंने पैकेज मैनेजर कंसोल से कोडिंगविथस्पीक की वही कमांड चलाई और यह काम किया।

    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

एक अन्य समाधान SQL प्रबंधन स्टूडियो के माध्यम से LocalDb में लॉगिन है, और उस डेटाबेस को हटाने का प्रयास करें:

यहां छवि विवरण दर्ज करें

हालाँकि यह मेरे लिए कारगर नहीं था, जब मैं इसे हटाने की कोशिश करता हूँ तो यह कहता है "TITLE: Microsoft SQL Server Management Studio

डेटाबेस '{0}' सर्वर पर मौजूद नहीं है। (SqlManagerUI)

जब मैं इसे अलग करने की कोशिश करता हूं तो डेटाबेस को अलग करने की सूची में प्रकट नहीं होता है, "ऑफ़लाइन ले" भी मुझे ऊपर त्रुटि पर ले जाता है।

जो मुझे लगता है कि यह लोकलडीबी में एक ठोस बग है।


मुझे ईबी 5 के साथ स्थानीय डीबी का उपयोग करने की कोशिश करने में समस्या है
निकोस

LocalDB का लाभ यह है कि आप इसे अपने स्थानीय खाते के अंतर्गत बिना IIS priveliges के, IIS एक्सप्रेस की तरह चला सकते हैं। यह प्रत्येक व्यक्तिगत उपयोगकर्ता के लिए IIS या SQL सर्वर स्थापित किए बिना कई devs के साथ प्रोजेक्ट साझा करने की अनुमति देता है।
बार्ट वेकेइजेन 10

4

सबसे आसान फिक्स कनेक्शन स्ट्रिंग में बस अपने डीबी का नाम बदलना है। रोवन मिलर्स ब्लॉग देखें वैकल्पिक समाधान के लिए विज़ुअल स्टूडियो 2012 से एक डेटाबेस को कैसे छोड़ें । हम भविष्य के संस्करण में इस समस्या को ठीक करने की उम्मीद करते हैं।


2

सबसे अच्छा और आसान उत्तर मैंने अभी इसे हल किया है, बस डेटा स्रोत के रूप में ur sql सर्वर नाम का उपयोग करें, प्रारंभिक कैटलॉग आपके डेटाबेस का नाम हो और वहां आप mdf लाइन हटा दें


1

मेरे मामले में मैं माइग्रेशन का उपयोग करता हूं और कॉन्फिग में मैंने केवल डेटा कॉनटेक्स्ट और डेटा कॉन्टेक्स्ट क्लास का ही नाम बदला है (केवल नाम बदला), फिर पुन: प्रयास करें और इससे मदद मिले


1

SQL 2014 के लिए कृपया CodingWithSpike चयनित उत्तर और इस टिप्पणी का पालन करें

साइड-नोट के रूप में, v11.0 SQL LocalDB 2012 के लिए विशिष्ट है। यदि आप LocalDB 2014 का उपयोग कर रहे हैं, तो MS ने इसका नाम बदलकर MSSqlLocalDb कर दिया। - कोडिंगविट्स्पाइक 29 अगस्त 14 को 19:20 बजे


सहायक पक्ष ध्यान दें, मैं वी.एस. 2015 के साथ एक पुराने प्रोजेक्ट पर काम कर रहा हूं । अधिक जानकारी । वहाँ भी से वी.एस. 2013 में इसी तरह के परिवर्तन कर रहे हैं v11.0करने के लिए ProjectsV12 । कम से कम मेरी मशीन पर :-)।
लक्ष्य

0

मेरे पास एक ही समस्या थी और मैंने अपने ऐप बायनेरिज़ में दूसरे फ़ोल्डर में "डेटाडायरेरी" फ़ोल्डर को मैन्युअल रूप से सेट करके इसे हल किया।

मैंने इस लाइन को Global.asax Application_Start पद्धति में डाला:

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रूप से डिफ़ॉल्ट रूप से सेट है , इसलिए जब तक स्पष्ट रूप से पहले नहीं बदला गया है, आपका कोड कुछ भी नहीं करता है।
शिम्मी वेइटहैंडलर

यदि आप इस दृष्टिकोण के साथ जाते हैं, तो निर्देशिका को न बदलें, एमडीएफ फ़ाइल नाम बदलें। इसके अलावा, romiller.com/2013/05/17/…
RickAndMSFT

0

मैं अपने कनेक्शन में डेटाबेस नाम का नाम बदलकर इसे ठीक कर सकता था, डिफ़ॉल्ट aspnet- {नंबर} से एक साधारण नाम के लिए, यह काम किया।


0

Sql सर्वर प्रबंधन स्टूडियो का उपयोग करके (LocalDb) \ v11.0 से कनेक्ट करें, db को हटाएं और फिर पैकेज मैनेजर कंसोल में एक अपडेट-डेटाबेस करें।


0

मुझे भी यही समस्या थी। मैंने पैकेज मैनेजर कंसोल में निम्न कमांड्स को रन किया और इसने समस्या को ठीक किया

sqllocaldb.exe stop MSSqlLocalDb

sqllocaldb.exe delete MSSqlLocalDb
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.