8

स्थापित करने के बाद मेरे पास एक स्थानीय फ़ाइल में डेटाबेस है जिसका उपयोग किसी प्रोग्राम द्वारा किया जाता है। कार्यक्रम में सीमित कार्यक्षमता है और मुझे कुछ त्वरित प्रश्न चलाने की आवश्यकता है। मैंने एसक्यूएल सर्वर प्रबंधन स्टूडियो एक्सप्रेस 2005 (एसएसएमएसई) स्थापित किया, जो SQL सर्वर इंस्टेंस से जुड़ा हुआ है, डेटाबेस फ़ाइल संलग्न है, और क्वेरी चलाया। अब मूल प्रोग्राम अब डेटाबेस से कनेक्ट नहीं होगा। मुझे त्रुटि प्राप्त होती है:"उपयोगकर्ता डिफ़ॉल्ट डेटाबेस नहीं खोल सकता। लॉगिन विफल रहा।" SQL सर्वर प्रबंधन स्टूडियो एक्सप्रेस

Cannot open user default database. Login failed. Login failed for user 'MyComputer\MyUserName'.

मैं एसएसएमएसई में वापस गया हूं और डिफ़ॉल्ट डेटाबेस सेट करने का प्रयास किया है। मैंने सुरक्षा, लॉग इन, बिल्टिन \ प्रशासक और बिल्टिन \ उपयोगकर्ता खोला है। के तहत सामान्य, मैंने प्रोग्राम के डेटाबेस में डिफ़ॉल्ट डेटाबेस सेट किया है। उपयोगकर्ता मैपिंग, मैंने सुनिश्चित किया कि डेटाबेस का पता लगाया गया है और db_datareader और db_datawriter चिह्नित हैं।

कार्यक्रम का उपयोग करता है कनेक्शन स्ट्रिंग:

Server=(local)\Instance; AttachDbFilename=C:\PathToDatabase\Database.mdf; Integrated Security=True; User Instance=True;

मैं जानता हूँ कि जैक सब के बारे में डेटाबेस प्रशासन। मैं और क्या भुल रहा हूं?

उत्तर

6

पहले, आपकी समस्या को अलग करने के लिए प्रयास करें:

  1. फ़ाइल का बैकअप ले! जाहिर है, कुछ परिस्थितियों में नीचे दिए गए कुछ कदम फ़ाइल को गायब कर सकते हैं।
  2. क्या आप वाकई प्रबंधन स्टूडियो के माध्यम से एक ही उदाहरण से कनेक्ट कर रहे हैं क्योंकि कार्यक्रम है?
  3. यदि संभव हो, तो उस उदाहरण को बंद करने का प्रयास करें जिसे आप उपयोग करने की उम्मीद नहीं कर रहे हैं।
  4. उपयोगकर्ता के डिफ़ॉल्ट डेटाबेस को मास्टर करने के लिए सेट करें और प्रोग्राम लॉगऑन करने का प्रयास करें।
  5. प्रबंधन स्टूडियो के माध्यम से उपयोगकर्ता के रूप में लॉगिन करने का प्रयास करें - चूंकि आपके पास एकीकृत सुरक्षा है, तो आपको प्रोग्राम स्टूडियो के रूप में प्रबंधन स्टूडियो खोलना चाहिए।
  6. क्या आप "उपयोगकर्ता उदाहरण" का उपयोग कर रहे हैं - शायद इसे जानने के बिना? यदि हां, तो यह सहायक हो सकता है: http://blogs.msdn.com/b/sqlexpress/archive/2006/11/22/connecting-to-sql-express-user-instances-in-management-studio.aspx

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

संपादित करें: मैंने ऊपर बिंदु 6 जोड़ा - यह इस प्रकार के लॉगिन की समस्या निवारण करते समय TODO की अपनी सूची में नया है। लेकिन यह आपके जैसा अनुभव कर रहा है उतना ही लगता है।

EDIT2: पहले संपादन में, सूची में नया आइटम जोड़ा गया था। इसलिए टिप्पणियों की संख्या उत्तर में संख्याओं के अनुरूप नहीं है।

+0

सभी उपयोगकर्ताओं के पास अब "मास्टर" पर डिफ़ॉल्ट डेटाबेस सेट है। एसएसएमएसई का उपयोग करके, मैंने बिना किसी समस्या के "एकीकृत (स्थानीय) \ इंस्टेंस" को जोड़ा, एकीकृत सुरक्षा का उपयोग कर प्रोग्राम के समान ही। कार्यक्रम अभी भी एक ही त्रुटि संदेश देता है। मैंने विशेष रूप से मेरे लिए एक लॉगिन भी बनाया है और अभी भी कोई प्यार नहीं है। –

+0

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

+0

प्वाइंट 5 भविष्य के लिए बिल्कुल मेरी समस्या का वर्णन करता है और हल करता है। आपकी मदद के लिए बहुत बहुत धन्यवाद! यह एक शर्म की बात है कि मैं आपको इसके लिए बोनस प्रतिनिधि नहीं दे सकता। –

2

मुझे अंत में यह पता चला, और मेरी स्थिति आज रात के बारे में मैंने जो भी पढ़ी है उससे अलग है।

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

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

  1. डेटाबेस के तहत उपयोगकर्ता को हटाएं -> [मेरे डेटाबेस] -> उपयोगकर्ता
  2. , सुरक्षा-> लॉगिन (अपने DB के तहत नहीं में फिर से उपयोगकर्ता बनाएं हालांकि कि शायद बहुत काम करता है
  3. । नए बनाए गए उपयोगकर्ता पर जाएं। फिर गुणों का चयन करें। फिर उपयोगकर्ता मैपिंग के तहत, इसे अपने डेटाबेस को डिफ़ॉल्ट बनाने के लिए कहें। इसे पढ़ने और लिखने के लिए लिखें।

सारांश: मेरे पास दो उपयोगकर्ता थे। डीबी के साथ आया , और एक जिसे मैंने बनाया था। डीबी के साथ आए एक को हटाएं और अपना खुद का बनाएँ।

0

मुझे भी यही समस्या है, यह पता चला है कि मैं सदस्यता वर्गों (एक दृश्य में) तक पहुंचने का प्रयास कर रहा था, और वह .Net App_Data फ़ोल्डर में डेटाबेस बनाने की कोशिश कर रहा था:

@Membership.GetUser().ProviderUserKey 

यह सिस्टम में निर्मित सदस्यता प्रणाली में आधारित डेटाबेस बनाने और बनाने के लिए सिस्टम को ट्रिगर करेगा, जो आपके सिस्टम की स्थापना के तरीके से नहीं हो सकता है।

0

मुझे इसी तरह की समस्या थी कि बस SQL ​​एक्सप्रेस उपयोगिता डाउनलोड करें जो उपयोगकर्ता के उदाहरण शुरू करने में सक्षम है। SSEUtil उपयोगकर्ता इंस्टेंस समस्याओं का निवारण करने में सहायता के लिए विजुअल स्टूडियो टीम द्वारा लिखित एक उपकरण है, आप उपयोगिता के साथ स्थापित फ़ाइल को पढ़ने में इसके बारे में अधिक पढ़ सकते हैं। http://www.microsoft.com/downloads/details.aspx?FamilyID=fa87e828-173f-472e-a85c-27ed01cf6b02&DisplayLang=en

आशा है कि इससे मदद मिलेगी।

4

यह विशेष रूप से अपने सवाल का जवाब नहीं किया जा सकता है लेकिन यह वही समस्या

के साथ अन्य मदद मिलेगी समस्या अपने उपयोगकर्ता एक डेटाबेस है जो किसी भी कारण से सुलभ नहीं है (नाम बदला जा सकता है, हटा दिया, भ्रष्ट या सामान्य रूप से किया जाता है ...) हल करने के लिए इस मुद्दे को केवल निम्न निर्देश का पालन प्रवेश पृष्ठ पर पुनः प्रवेश करना

  1. कोशिश अन्य टैब "कनेक्शन गुण" का चयन नहीं है।
  2. टैब के अंतर्गत का पता लगाने "डेटाबेस से कनेक्ट करें" और एक मौजूदा डेटाबेस आप tempdb पसंद है या गुरु
  3. की पहुंच है एक बार जब आप एसक्यूएल सर्वर उदाहरण से जुड़े हैं का चयन लॉगिन एक नया डिफ़ॉल्ट डेटाबेस आवंटित करने के लिए TSQL नीचे निष्पादित ।

    Use master 
    GO 
    
    ALTER LOGIN [yourloginname] WITH DEFAULT_DATABASE = TempDB 
    GO 
    

वैकल्पिक रूप से एक बार आप

अनुच्छेद यूआई

के माध्यम से मास्टर करने के लिए अपने डिफ़ॉल्ट डेटाबेस का नाम बदलने से जुड़ा से लिया: http://www.mytechmantra.com/LearnSQLServer/Fix-cannot-open-user-default-database-Login-failed-Login-failed-for-user-SQL-Server-Error/

0

मेरे मामले में मैं स्थापित करने के लिए "किसी भी डेटाबेस से कनेक्ट" था सही पथ:

अपने उदाहरण पर, Security पर जाएं, फिर Logins पर जाएं।

वहां राइट क्लिक करें, आपको properties दिखाई देगा और आपको Securables पर क्लिक करना चाहिए।

वहां किसी भी डेटाबेस से कनेक्ट होने की संभावना है।

0

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

यह मैन्युअल रूप से मास्टर को टाइप करने के बाद मुझे सही ढंग से टाइप करने के बाद मैं कनेक्शन (कनेक्शन गुण टैब पर) से कनेक्ट करना चाहता था।

संबंधित मुद्दे