मैंने दो नए AD समूह बनाए और उन्हें डेटाबेस के उपयोगकर्ताओं के रूप में जोड़ा लेकिन वे RED X के साथ दिखते हैं। इसका क्या मतलब है? धन्यवाद।
मैंने दो नए AD समूह बनाए और उन्हें डेटाबेस के उपयोगकर्ताओं के रूप में जोड़ा लेकिन वे RED X के साथ दिखते हैं। इसका क्या मतलब है? धन्यवाद।
जवाबों:
इसका मतलब यह नहीं है कि उपयोगकर्ता अक्षम है (आप केवल लॉगिन को अक्षम कर सकते हैं ), इसका मतलब है कि उपयोगकर्ता के पास डेटाबेस से कनेक्ट करने के विशेषाधिकार नहीं हैं। मुझे यकीन नहीं है कि आपके उपयोगकर्ता कैसे बनाए गए, लेकिन यह प्रदर्शित करने का सबसे आसान तरीका है:
CREATE LOGIN u1 WITH PASSWORD = 'x', CHECK_POLICY = OFF;
GO
USE tempdb;
GO
CREATE USER u1 FROM LOGIN u1;
GO
ALTER LOGIN u1 DISABLE;
GO
-- u1 has no red x even though the login has been disabled
CREATE USER u2 WITHOUT LOGIN;
GO
-- check Object Explorer, u2 has no red x
DENY CONNECT TO u2;
GO
-- check Object Explorer, u2 now has a red x!
CREATE USER u3 WITHOUT LOGIN;
GO
-- check Object Explorer, u3 has no red x
REVOKE CONNECT FROM u3;
GO
-- check Object Explorer, u3 now has a red x!
(आपको GO
कमांड के बीच ऑब्जेक्ट एक्सप्लोरर को रिफ्रेश करने की आवश्यकता हो सकती है क्योंकि, अच्छी तरह से, कैशिंग।)
इसे ठीक करने के लिए (यह मानते हुए कि आप वास्तव में उन्हें डेटाबेस से कनेक्ट करने में सक्षम होना चाहते हैं):
GRANT CONNECT TO [DomainName\BI360Consultants];
GRANT CONNECT TO [DomainName\BI360Users];
निश्चित रूप से आपको डेटाबेस में क्या करने में सक्षम होना चाहिए इसके आधार पर आपको अधिक अनुमतियों को लागू करने की आवश्यकता होगी।
इस स्थिति में आने के लिए अन्य, अधिक अस्पष्ट तरीके हो सकते हैं (जैसे कि वास्तव में उपयोगकर्ता को जोड़ने के बिना डेटाबेस में एक भूमिका के लिए एक डोमेन समूह जोड़ना, जैसा कि माइकलके के उत्तर में वर्णित है )। हालांकि मैं ईमानदार रहूंगा, जब मैंने ओपी के पुराने तरीके या सही तरीके से करने की कोशिश की, तो मैं एक उपयोगकर्ता के बिना डोमेन समूह को एक भूमिका में जोड़ने में सक्षम नहीं था:
-- the old way
EXEC sys.sp_addrolemember N'db_datareader', N'[CAKE\MyGroup]';
Msg 15410, Level 11, State 1, प्रक्रिया sp_addrolemember
उपयोगकर्ता या भूमिका '[CAKE \ MyGroup]' इस डेटाबेस में मौजूद नहीं है।
-- the right way
ALTER ROLE db_datareader ADD MEMBER [CAKE\MyGroup];
Msg 15151, Level 16, State 1
प्रिंसिपल 'CAKE \ MyGroup' नहीं जोड़ सकता, क्योंकि यह मौजूद नहीं है या आपके पास अनुमति नहीं है।
निश्चित रूप से इस परिणाम के साथ मैंने ऐसा कोई उपयोगकर्ता नहीं देखा sysusers
(पदावनत; इसका उपयोग बंद करें) या sys.database_principals
। हालाँकि, अगर मैंने ऐसा किया ( सेपिक के उत्तर के लिए धन्यवाद ):
GRANT SELECT ON dbo.SomeTable TO [CAKE\MyGroup];
तब उपयोगकर्ता ने उन विचारों में दिखाया और ऑब्जेक्ट एक्स के एक्सप्लोरर में एक उपयोगकर्ता के रूप में लाल x के कारण दिखाई दिया HAS_DBACCESS() = 0
। जो अभी भी लगभग एक ही बात की राशि है: "डेटाबेस का उपयोग नहीं कर सकते।" इसलिए यदि ऊपर GRANT CONNECT
काम नहीं करता है (मेरे मामले में, कि लाल एक्स से छुटकारा मिल गया, लेकिन मैंने वास्तव में डेटाबेस को उस खाते के रूप में क्वेरी करने की कोशिश नहीं की), तो यह भी जानने की कोशिश करें कि यह विफल हो सकता है:
CREATE USER [DOMAIN\Group] FROM LOGIN [DOMAIN\Group];
मेरे मामले में, जब मैंने इस उपयोगकर्ता से कनेक्ट किया, तो इसने मुझे CREATE USER
कमांड चलाने से रोका :
Msg 15023, Level 16, State 1, Line 16
उपयोगकर्ता, समूह, या भूमिका 'CAKE \ MyGroup' वर्तमान डेटाबेस में पहले से मौजूद है।
यह राज्य कुछ सिस्टम डेटाबेस पर अतिथि खाते के अपवाद के साथ guest
/ INFORMATION_SCHEMA
/ sys
- के लिए हमेशा सही होगा । उस पर ध्यान न दें और उन्हें अकेला छोड़ दें।
से विषय :sp_addrolemember
से विषय :sys.sysusers
मैं केवल हारून बर्ट्रेंड के जवाब के लिए इसे जोड़ना चाहता हूं:
इसका अर्थ है कि उपयोगकर्ता के पास डेटाबेस से जुड़े विशेषाधिकार नहीं हैं (आप उपयोगकर्ताओं को, केवल लॉगिन को अक्षम नहीं कर सकते हैं)। मुझे यकीन नहीं है कि आपके उपयोगकर्ता कैसे बनाए गए ...
यह Windows
केवल निम्नलिखित तरीकों से प्रिंसिपलों के साथ हो सकता है :
Windows
लॉगिन सर्वर स्तर पर मौजूद है, लेकिन प्रश्न में डेटाबेस के लिए मैप नहीं किया गया है, किसी ने डेटाबेस स्तर पर इस विंडोज प्रिंसिपल के लिए grant
/ deny
कुछ अनुमति का फैसला किया है। इस मामले में संबंधित उपयोगकर्ता / स्कीमा डेटाबेस में बनाया जाएगा और इस grant
/ के साथ पंक्ति को deny
लिखा जाएगा sys.database_permissions
। यह इस डेटाबेस तक कोई पहुँच नहीं देगा क्योंकि नव निर्मित उपयोगकर्ता अभी भी connect
अनुमति को याद करता है, और आप इसे लाल तीर के साथ OE में देखेंगे।
मुझे लगता है कि मुझे पता चला कि ऐसा क्यों हुआ।
परिदृश्य:
डोमेन \ BI360Users एक विज्ञापन समूह है
डोमेन \ BI360Users को सर्वर में लॉगिन के रूप में जोड़ा गया है (इसमें कनेक्ट अनुमतियाँ हैं)
डोमेन \ BI360Users डेटाबेस के उपयोगकर्ता के रूप में मौजूद नहीं है
मैं निम्नलिखित कार्य करता हूं:
USE TEMPDB
GO
EXEC sp_addrolemember N'db_datareader', N'Doamin\BI360users'
GO
सफलतापूर्वक पूरा करता है।
ताज़ा करें: लाल 'x' प्रकट होता है।
उपयोगकर्ता डेटाबेस के लिए मैप नहीं किया गया है:
यदि मैं अब उपयोगकर्ता बनाता हूं:
USE TempDB
GO
CREATE USER [Domain\BI360Users] FOR LOGIN [DOMAIN\BI360Users]
GO
तो, ऐसा प्रतीत होता है कि स्क्रीन शो स्पष्ट रूप से ऊपर दिखाए जाने के बावजूद कोई उपयोगकर्ता नहीं था।
GRANT CONNECT
, जैसा कि मेरे मूल उत्तर ने सुझाया है, समस्या को हल करना चाहिए था।
Red X का मतलब है कि लॉगिन SQL सर्वर में w / अक्षम है