वीएस डीबी परियोजना के रूप में आयात करने के बाद "उपयोगकर्ता के लिए अप्रतिबंधित संदर्भ"


11

मैंने अभी एक मौजूदा SQL Server 2008r2 उत्पादन डेटाबेस को VS 2013 डेटाबेस प्रोजेक्ट में आयात किया है।

अब मुझे इसकी तर्ज पर कई त्रुटियां हैं

Error       SQL71501: User: [mydbuser] has an unresolved reference to Login [mydbuser].

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

फ़ाइलें स्वयं के रूप में उत्पन्न होती हैं

CREATE USER [mydbuser] FOR LOGIN [mydbuser];

या

CREATE USER [mydomainuser] FOR LOGIN [MYDOMAIN\mydomainuser];

त्रुटि मार्कर से पता चलता है कि यह विशेष रूप से लॉगिन के लिए है । जैसा कि सिस्टम-स्तरीय ऑब्जेक्ट है, मैं इसे db प्रोजेक्ट के दायरे से बाहर समझ सकता हूं।

क्या यह पसंद है कि मैं उन सभी को बदलूं

CREATE USER [mydbuser] WITHOUT LOGIN;

या CREATE LOGINप्रत्येक फ़ाइल की शुरुआत में क्लॉज जोड़ें ?

लॉगिन संदर्भ निकालना सरल प्रतीत होता है और उपयोगकर्ताओं को पूरी तरह से हटाना सबसे सरल होगा।

मैं यह सुनिश्चित करना चाहता हूं कि मैं उपकरण का उपयोग कर रहा हूं जिस तरह से इसका उद्देश्य था। क्या उत्पादन में किसी भी मामले को फिर से प्रकाशित करने में कोई समस्या होगी? किसी परियोजना के माध्यम से उपयोगकर्ता / लॉगिन जोड़ने की उचित प्रक्रिया क्या है?


1
मैंने अभी देखा कि यह सभी उपयोगकर्ताओं के लिए नहीं हुआ। वे सभी SQL उपयोगकर्ता थे, और कुछ अक्षम थे (हालांकि अन्य नहीं थे)। कोई विचार जहां मतभेदों की तलाश शुरू करना है?
ग्रेग

जवाबों:


9

सबसे आसान तरीका ssdt के माध्यम से उपयोगकर्ताओं को प्रबंधित नहीं करना है (ज्यादातर लोग नहीं करते हैं)। तो आप बस उन्हें पट्टी कर सकते हैं और लॉगिन या उपयोगकर्ताओं को तैनात नहीं कर सकते।

इसके तीन तरीके हैं:

  • उपयोगकर्ताओं / लॉगिन को अनदेखा करने के लिए नए विकल्प
  • उन्हें बाहर निकालने के लिए एक तैनाती योगदानकर्ता लिखें
  • मेरे परिनियोजक योगदानकर्ता का उपयोग करें http://agilesqlclub.Codeplex.com

ईडी


यहाँ आपका लिंक भी काफी मददगार था: blogs.msdn.com/b/ssdt/archive/2015/02/23/…
ग्रेग

1
क्या आप "उपयोगकर्ताओं / लॉगिन को अनदेखा करने के लिए नए विकल्प" पर विस्तार से बता सकते हैं?
यवर मुर्तजा


9

मुझे भी यही समस्या थी और यह कड़ी मिली

उपयोगकर्ता के पास लॉगिन का एक अनसुलझा संदर्भ है

यदि आप एप्लिकेशन विशिष्ट लॉगिन बनाते हैं (जो आपको चाहिए) तो आप अपना समाधान बनाने की कोशिश करते समय इस त्रुटि के पार आने वाले हैं। इस त्रुटि को ठीक करने के लिए, विकल्प में 'नॉन-एप्लिकेशन-स्कोप्ड' ऑब्जेक्ट प्रकारों (शीर्ष पर गियर आइकन) का चयन करें जब आप स्कीमा तुलना करते हैं (स्कीमा तुलना को खोजने के लिए डेटाबेस प्रोजेक्ट पर राइट-क्लिक करें)। तब आप केवल अपने नियमित प्रोजेक्ट में लॉगिन आयात कर सकते हैं, और संदर्भों को क्रमबद्ध किया जाता है। नोट: यदि आप ऑब्जेक्ट प्रकार टैब पर क्लिक करते हैं और यह डायलॉग को बंद कर देता है (जो कि मेरे लिए किया गया है), इसके बजाय तब तक टैब कुंजी का उपयोग करें जब तक कि एप्लिकेशन-स्कॉप्ड हाइलाइट न हो जाए, फिर गैर-एप्लिकेशन-स्कोप को हाइलाइट करने के लिए डाउन एरो दबाएं और दबाएं अंतरिक्ष बार। अब आपको ओके पर क्लिक करने और लॉगिन देखने में सक्षम होना चाहिए।


1
जवाब देने के लिए धन्यवाद! क्या आप इन निर्देशों के लिए कुछ संदर्भ प्रदान कर सकते हैं? उदाहरण के लिए, स्कीमा की तुलना इस त्रुटि से क्या है? ऑब्जेक्ट प्रकार टैब कहां है? आप टैब कुंजी को कहाँ मारते हैं? आदि
जेक

ज़रूर। मूल रूप से VS2013 / 2015 में आपके पास आपकी डेटाबेस परियोजना है जिसमें आपके द्वारा उपयोग किए जा रहे समाधान के लिए आपकी सभी SQL शामिल हैं। यदि आप उस DB प्रोजेक्ट पर राइट क्लिक करते हैं और "स्कीमा तुलना" पर क्लिक करते हैं, तो आप अपने डेटाबेस में व्हाट्स के साथ अपने प्रोजेक्ट की तुलना कर सकते हैं। पॉप अप विंडो के शीर्ष पर सेटिंग्स के लिए एक कोग आइकन है। आप किसी कारण से अपने माउस के साथ "गैर-एप्लिकेशन-स्कोप" चेकबॉक्स पर क्लिक नहीं कर सकते हैं, इसलिए इसके बजाय टैब कुंजी का उपयोग करें। टैब कुंजी को एक बार दबाएं, फिर एरो डाउन की और फिर इसे चुनने के लिए स्पेस बार। उम्मीद है की वो मदद करदे।
स्पीडऑफस्पिन

1

जाहिर है, यह समस्या अभी भी VS2017 डेटाबेस परियोजनाओं पर भी हो रही है।

मैं पहले लॉगिन बनाकर इसे हल करने में कामयाब रहा और फिर उपयोगकर्ता बना।

    -- Windows Account
    CREATE LOGIN [Domain\Username]
    FROM WINDOWS WITH DEFAULT_LANGUAGE = [us_english];

    GO

    CREATE USER [Domain\Username] FOR LOGIN [Domain\Username];
    GO

    -- Sql Acccount

    CREATE LOGIN [sql_account] WITH PASSWORD = 'Ch@ngeth1spA$swurD'
    GO

    CREATE USER [sql_account]
    FROM LOGIN [sql_account]
    WITH DEFAULT_SCHEMA = dbo

    GO


    -- Then set the sql file Build Action to "Build"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.