SQL Server 2008 R2 त्रुटि: 15023, उपयोगकर्ता, समूह या भूमिका पहले से मौजूद है


16

मेरे पास एक परीक्षण डेटाबेस है जिसके साथ मुझे समस्याएँ हैं।
मैं रिपोर्टिंग डेटाबेस तक नहीं पहुँच सकता, और आवेदन की मदद प्रलेखन निम्नलिखित करने के लिए कहता है:

Resolution: 

1. Launch the SQL Server Management Studio and connect to the database server(s) hosting   the Vision and Reporting Server databases. 
2. Expand the security folder. 
3. Select logins and right click on the <username> user and choose properties. 
4. Click the User Mapping tab 
5.Make sure the following databases are selected in the Users mapped to this Login:

    ReportServer
    ReportServerTempDB
    Your Vision databases
    This maps the login/user to the respective databases.
6. As you select each database (including your Vision database), select the db_owner role in the Database role membership for: section. You must select this option for each database.

जब मैं ऐसा करता हूं, तो मुझे निम्नलिखित त्रुटि मिलती है:

"Create failed for user '<servername>\<username>'.  User, group, or role '<servername>\<username>' already exists in the current database. (Microsoft SQL Server, Error: 15023)"

मैंने इस त्रुटि को नजरअंदाज कर दिया है और प्रत्येक डेटाबेस पर निम्नलिखित कमांड की कोशिश की है:

 ALTER USER [<username>] WITH LOGIN = [<username>] 

संदेश ने संकेत दिया कि कमांड सफलतापूर्वक पूरा हो गया है लेकिन मुझे अभी भी उपरोक्त त्रुटि मिल रही है जब मैं ऊपर दिए गए निर्देशों के अनुसार प्रत्येक डेटाबेस को मैप करने का प्रयास करता हूं।

मुझे किसकी याद आ रही है?

परिजन की टिप्पणी (धन्यवाद) के लिए मैंने यह कोशिश की: - मैंने सही उपयोगकर्ता पर क्लिक किया और चयनित किया: स्क्रिप्ट लॉग इन> ड्रॉप और क्रिएट टू> क्वीन क्वेरी विंडो। - मैंने परिणामी क्वेरी को चलाया और अन्य दो डेटाबेस और db_owner को फिर से चुनकर उपयोगकर्ता भूमिकाओं को मैप करने की कोशिश की, लेकिन मुझे अभी भी ऊपर जैसा ही त्रुटि संदेश मिल रहा है।

विचार ??

जवाबों:


12

ऐसी कई चीजें हैं जो आप आजमा सकते हैं, और प्रत्येक की सफलता संभवतः इस बात पर निर्भर करेगी कि आपके पास कौन सी सर्वर भूमिका है।

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

अगला विकल्प: यदि आप बड़ी संख्या में उपयोगकर्ताओं को स्थानांतरित कर रहे हैं, तो sp_help_revlogin का उपयोग करें। sp_help_revlogin एक Microsoft द्वारा संग्रहित प्रक्रिया है जो पासवर्ड और SID सहित एक सर्वर से दूसरे सर्वर पर लॉगिन करने में मदद करेगी। यहाँ इसके बारे में एक अच्छा लेख है SP_HELP_REVLOGIN


देखें support.microsoft.com/en-us/kb/918992 एसक्यूएल सर्वर के उदाहरण के बीच लॉगिन और पासवर्ड हस्तांतरण करने के लिए कैसे
जेम्स जेनकींस

3

मैं का उपयोग Auto_Fix साथ sp_change_users_loginमेरी देव वातावरण में इस प्रकार के मुद्दों (त्रुटि 15023) ठीक करने के लिए। सुरक्षा-संवेदनशील स्थितियों में Auto_Fix के उपयोग से बचें।

Auto_Fix: उसी नाम के SQL सर्वर लॉगिन के लिए वर्तमान डेटाबेस में sys.database_principals सिस्टम कैटलॉग दृश्य में उपयोगकर्ता प्रविष्टि लिंक करता है। यदि समान नाम वाला लॉगिन मौजूद नहीं है, तो एक बनाया जाएगा। यह पुष्टि करने के लिए कि सही लिंक वास्तव में बनाया गया है, पुष्टि करने के लिए Auto_Fix कथन से परिणाम का परीक्षण करें। सुरक्षा-संवेदनशील स्थितियों में Auto_Fix के उपयोग से बचें।

sp_change_users_login 'AUTO_FIX', 'myuser'

इसके अलावा, ध्यान दें कि यह सुविधा Microsoft SQL सर्वर के भविष्य के संस्करण में निकाली जा सकती है।

अन्य संदर्भ:

  1. SQL Server 2008 उपयोगकर्ता, समूह या भूमिका वर्तमान डेटाबेस में पहले से मौजूद है
  2. FIX: त्रुटि 15023: उपयोगकर्ता पहले से ही मौजूदा डेटाबेस में मौजूद है
  3. SQL मौजूदा उपयोगकर्ता के लिए लॉगिन का मानचित्र बनाता है

0
ALTER USER [<username>] WITH LOGIN=[<username>]

सही दृष्टिकोण है।

अन्यथा जाएं:

सुरक्षा> लॉगिन> (आपका उपयोगकर्ता नाम)> गुण> उपयोगकर्ता मानचित्रण

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

और उस उपयोगकर्ता को उस डेटाबेस पर रीमैप करें जिसे आप चाहते हैं।

आप अनाथों की जांच करने के लिए अपने डेटाबेस के संदर्भ में निम्नलिखित क्वेरी का उपयोग कर सकते हैं:

select
    dp.name [user_name]
    ,dp.type_desc [user_type]
    ,isnull(sp.name,'Orhphaned!') [login_name]
    ,sp.type_desc [login_type]
from   
    sys.database_principals dp
    left join sys.server_principals sp on (dp.sid = sp.sid)
where
    dp.type in ('S','U','G')
    and dp.principal_id >4
order by sp.name

-4

मास्टर डेटाबेस पर जाएं और उपयोगकर्ता को हटा दें

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