डेटाबेस उपयोगकर्ता पर RED X का क्या अर्थ है?


16

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

मैंने दो नए AD समूह बनाए और उन्हें डेटाबेस के उपयोगकर्ताओं के रूप में जोड़ा लेकिन वे RED X के साथ दिखते हैं। इसका क्या मतलब है? धन्यवाद।

जवाबों:


21

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

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

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


इसने मेरे लिए इसे ठीक कर दिया। लेकिन कुछ अन्य अंतर्निहित मुद्दे होने चाहिए - मेरे उपयोगकर्ता स्क्रिप्ट के माध्यम से बनाए गए हैं और कई डेटाबेस तक पहुंच है। केवल एक DB पर एक उपयोगकर्ता को स्पष्ट "कनेक्शन" की अनुमति की आवश्यकता थी।
मोरवेल

5

मैं केवल हारून बर्ट्रेंड के जवाब के लिए इसे जोड़ना चाहता हूं:

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

यह Windowsकेवल निम्नलिखित तरीकों से प्रिंसिपलों के साथ हो सकता है :

Windowsलॉगिन सर्वर स्तर पर मौजूद है, लेकिन प्रश्न में डेटाबेस के लिए मैप नहीं किया गया है, किसी ने डेटाबेस स्तर पर इस विंडोज प्रिंसिपल के लिए grant/ denyकुछ अनुमति का फैसला किया है। इस मामले में संबंधित उपयोगकर्ता / स्कीमा डेटाबेस में बनाया जाएगा और इस grant/ के साथ पंक्ति को denyलिखा जाएगा sys.database_permissions। यह इस डेटाबेस तक कोई पहुँच नहीं देगा क्योंकि नव निर्मित उपयोगकर्ता अभी भी connectअनुमति को याद करता है, और आप इसे लाल तीर के साथ OE में देखेंगे।


धन्यवाद, लेकिन हम एक लाल 'x' के बारे में बात कर रहे हैं, एक तीर के बारे में नहीं।
माइकल किर्कपैट्रिक

यह स्टूडियो विज़ुअलाइज़ेशन की बात है, लेकिन एक ही चीज़ है
सेप्टिक जूल

0

मुझे लगता है कि मुझे पता चला कि ऐसा क्यों हुआ।

परिदृश्य:

डोमेन \ 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

लाल 'x' चला जाता है: यहाँ छवि विवरण दर्ज करें

तो, ऐसा प्रतीत होता है कि स्क्रीन शो स्पष्ट रूप से ऊपर दिखाए जाने के बावजूद कोई उपयोगकर्ता नहीं था।

यहाँ sysusers से जानकारी है: यहाँ छवि विवरण दर्ज करें


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

1
आपने डोमेन समूह को डेटाबेस भूमिका में जोड़ने के अलावा कुछ किया होगा, क्योंकि यह काम नहीं करता है (जब तक कि आप SQL सर्वर के कुछ प्राचीन संस्करण पर नहीं हैं)। और इस परिदृश्य में भी GRANT CONNECT, जैसा कि मेरे मूल उत्तर ने सुझाया है, समस्या को हल करना चाहिए था।
हारून बर्ट्रेंड

0

मुझे भी यही समस्या थी। मैंने अपने SQL सर्वर डेटाबेस की 'सुरक्षा / लॉगिन के स्नेह' में उपयोगकर्ता संपत्ति की स्थिति अनुभाग में 'लॉगिन' की स्थिति को 'सक्षम' में बदलकर इसे ठीक किया यहाँ छवि विवरण दर्ज करें

इस स्थिति को बदलने के बाद लाल निशान चला गया।


-3

Red X का मतलब है कि लॉगिन SQL सर्वर में w / अक्षम है


धन्यवाद। लेकिन वे सक्षम हैं।
माइकल किर्कपैट्रिक

उपयोगकर्ताओं को अक्षम नहीं किया जा सकता है।
हारून बर्ट्रेंड

क्या खाता इंस्टेंस स्तर पर Logins फ़ोल्डर में मौजूद है? यदि यह कमांड "लॉगिन यूजर [YourLogin] लॉगिन के लिए [YourLogin]" w / को डेटाबेस में चलाता है। रेड एक्स गायब हो जाना चाहिए।
गोफोरब्रोक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.