मैं SQL Server 2005/2008 में किसी T-SQL स्क्रिप्ट के माध्यम से उपयोगकर्ता बनाने की कोशिश कर रहा हूं। मैं उपयोगकर्ता मौजूद है अगर जाँच करें और उपयोगकर्ता बनाने के लिए निम्नलिखित एसक्यूएल चलाते हैं यह नहीं है:SQL सर्वर: डेटाबेस में कोई Windows उपयोगकर्ता मौजूद है या नहीं, यह जांचने के लिए कि एक अलग उपयोगकर्ता नाम
IF NOT EXISTS (SELECT *
FROM sys.database_principals
WHERE name = N'MyDomain\MyUser')
BEGIN
CREATE USER [MyDomain\MyUser] FOR LOGIN [MyDomain\MyUser] WITH default_schema=[dbo];
SELECT 1;
END
ELSE
BEGIN
SELECT 0;
END
दुर्भाग्य से, यह जब Windows खाते MyDomain \ MyUser पहले से डेटाबेस में है, लेकिन एक के अंतर्गत है काम नहीं करता है अलग नाम इसका एक उदाहरण होगा यदि MyDomain \ MyUser वह खाता था जिसने डेटाबेस बनाया था तो यह पहले ही डीबीओ उपयोगकर्ता के नीचे डेटाबेस में होगा।
Msg 15063, Level 16, State 1, Line 1 The login already has an account under a different user name.
मैं अगर खिड़कियों उपयोगकर्ता MyDomain \ MyUser पहले से डेटाबेस में एक उपयोगकर्ता भले ही वह किसी दूसरे उपयोगकर्ता के नाम के तहत है कैसे जांच कर सकते हैं: जब इस मामले मैं निम्नलिखित त्रुटि मिलती है?
शानदार जवाब। धन्यवाद डेमियन। –
मुझे इसके बजाय 'sys.syslogins' से चयन करने की आवश्यकता है,' SUSER_SID' के लिए +1 –