RED X บนผู้ใช้ฐานข้อมูลหมายถึงอะไร


16

ป้อนคำอธิบายรูปภาพที่นี่

ฉันสร้างกลุ่มโฆษณาใหม่สองกลุ่มและเพิ่มพวกเขาเป็นผู้ใช้ฐานข้อมูล แต่พวกเขาแสดงด้วย 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!

(คุณอาจต้องรีเฟรช Object Explorer ระหว่างGOคำสั่งเพราะเช่นกันแคช)

หากต้องการแก้ไข (สมมติว่าคุณต้องการให้พวกเขาสามารถเชื่อมต่อกับฐานข้อมูลได้):

GRANT CONNECT TO [DomainName\BI360Consultants];
GRANT CONNECT TO [DomainName\BI360Users];

แน่นอนคุณจะต้องใช้สิทธิ์เพิ่มเติมขึ้นอยู่กับสิ่งที่คุณต้องการให้พวกเขาสามารถทำในฐานข้อมูล

อาจมีวิธีอื่นที่ชัดเจนกว่านี้ในการเข้าสู่สถานะนี้ (เช่นการเพิ่มกลุ่มโดเมนให้กับบทบาทในฐานข้อมูลโดยไม่ต้องเพิ่มผู้ใช้ตามที่อธิบายไว้ในคำตอบของ MichaelK ) แม้ว่าฉันจะซื่อสัตย์เมื่อฉันพยายามทำสิ่งที่ OP ทำด้วยวิธีแบบเดิมหรือวิธีที่ถูกต้อง แต่ฉันไม่สามารถเพิ่มกลุ่มโดเมนให้กับบทบาทโดยไม่มีผู้ใช้อยู่:

-- the old way
EXEC sys.sp_addrolemember N'db_datareader', N'[CAKE\MyGroup]';

ข่าวสารเกี่ยวกับ 15410, ระดับ 11, สถานะ 1, โพรซีเดอร์ sp_addrolemember
ผู้ใช้หรือบทบาท '[CAKE \ MyGroup]' ไม่มีอยู่ในฐานข้อมูลนี้

-- the right way
ALTER ROLE db_datareader ADD MEMBER [CAKE\MyGroup];

ข่าวสารเกี่ยวกับ 15151, ระดับ 16, สถานะ 1
ไม่สามารถเพิ่มเงินต้น 'CAKE \ MyGroup' ได้เนื่องจากไม่มีอยู่หรือคุณไม่มีสิทธิ์

แน่นอนกับผลที่นี้ผมไม่ได้เห็นผู้ใช้ดังกล่าวในsysusers(เลิก; หยุดใช้มัน) sys.database_principalsหรือ อย่างไรก็ตามถ้าฉันทำเช่นนี้ (ขอบคุณคำตอบของ sepupic ):

GRANT SELECT ON dbo.SomeTable TO [CAKE\MyGroup];

จากนั้นผู้ใช้ไม่แสดงขึ้นในมุมมองเหล่านั้นและไม่แสดงขึ้นเป็นผู้ใช้ในวัตถุ Explorer HAS_DBACCESS() = 0ที่มีเครื่องหมายกากบาทสีแดงเนื่องจาก ซึ่งยังมีจำนวนที่เหมือนกัน: "ไม่สามารถเข้าถึงฐานข้อมูล" ดังนั้นถ้าข้างต้นGRANT CONNECTใช้งานไม่ได้ (ในกรณีของฉันที่กำจัด x สีแดง แต่ฉันไม่ได้พยายามสืบค้นฐานข้อมูลเป็นบัญชีนั้น) ลองทำสิ่งต่อไปนี้โดยรู้ว่ามันอาจล้มเหลว:

CREATE USER [DOMAIN\Group] FROM LOGIN [DOMAIN\Group];

ในกรณีของฉันเมื่อฉันให้สิทธิ์การเชื่อมต่อกับผู้ใช้นี้มันทำให้ฉันไม่สามารถเรียกใช้CREATE USERคำสั่ง:

ข่าวสารเกี่ยวกับ 15023 ระดับ 16 สถานะ 1
ผู้ใช้กลุ่ม16 หรือบทบาท 'CAKE \ MyGroup' มีอยู่แล้วในฐานข้อมูลปัจจุบัน

สถานะนี้จะเป็นจริงสำหรับguest/ INFORMATION_SCHEMA/ sys- ยกเว้นบัญชี Guest บนฐานข้อมูลระบบที่แน่นอน ไม่สนใจสิ่งนั้นและปล่อยให้อยู่ตามลำพัง


จากหัวข้อ :sp_addrolemember

ป้อนคำอธิบายรูปภาพที่นี่

จากหัวข้อ :sys.sysusers

ป้อนคำอธิบายรูปภาพที่นี่


สิ่งนี้แก้ไขได้สำหรับฉัน แต่จะต้องมีปัญหาพื้นฐานอื่น ๆ - ผู้ใช้ของฉันสร้างขึ้นผ่านสคริปต์และสามารถเข้าถึงฐานข้อมูลหลาย ๆ ผู้ใช้เพียงรายเดียวบนฐานข้อมูลเดียวต้องการสิทธิ์ "CONNECT" ที่ชัดเจนเพื่อให้ได้รับอนุญาต
Morvael

5

ฉันต้องการเพียงแค่เพิ่มคำตอบของแอรอนเบอร์ทรันด์ที่ดูแลเรื่องนี้:

หมายความว่าผู้ใช้ไม่มีสิทธิ์ในการเชื่อมต่อกับฐานข้อมูล (คุณไม่สามารถปิดการใช้งานผู้ใช้เพียงเข้าสู่ระบบเท่านั้น) ฉันไม่แน่ใจว่า ผู้ใช้ของคุณถูกสร้างอย่างไร ...

สิ่งนี้สามารถเกิดขึ้นได้กับWindowsผู้ว่าจ้างในวิธีต่อไปนี้:

Windowsการเข้าสู่ระบบมีอยู่ในระดับเซิร์ฟเวอร์ แต่ไม่ได้แมปกับฐานข้อมูลที่เป็นปัญหาใครบางคนตัดสินใจที่จะgrant/ denyอนุญาตบางส่วนให้อาจารย์ใหญ่ของ Windows นี้ที่ระดับฐานข้อมูล ในกรณีนี้ผู้ใช้ / สคีที่เกี่ยวข้องจะถูกสร้างขึ้นในฐานข้อมูลและแถวที่มีนี้grant/ จะถูกเขียนไปdeny sys.database_permissionsสิ่งนี้จะไม่ให้สิทธิ์การเข้าถึงฐานข้อมูลนี้เนื่องจากผู้ใช้ที่เพิ่งสร้างขึ้นใหม่ยังคงไม่connectได้รับอนุญาตและคุณจะเห็นมันใน OE ด้วยลูกศรสีแดง


ขอบคุณ แต่เรากำลังพูดถึง RED 'x' ไม่ใช่ลูกศร
Michael Kirkpatrick

มันเป็นเรื่องของการสร้างภาพในสตูดิโอ แต่เป็นสิ่งเดียวกัน
เซพปิ

0

ฉันคิดว่าฉันคิดว่าทำไมมันเกิดขึ้น

สถานการณ์:

โดเมน \ BI360 ผู้ใช้เป็นกลุ่มโฆษณา

มีการเพิ่มโดเมน \ BI360 ผู้ใช้เป็นการล็อกอินไปยังเซิร์ฟเวอร์

ไม่มีโดเมน \ BI360 ผู้ใช้ในฐานะผู้ใช้ของฐานข้อมูล

ฉันทำต่อไปนี้:

USE TEMPDB
GO
EXEC sp_addrolemember N'db_datareader', N'Doamin\BI360users'
GO

เสร็จสิ้นเรียบร้อยแล้ว

รีเฟรช: RED 'x' จะปรากฏขึ้น

ป้อนคำอธิบายรูปภาพที่นี่

ผู้ใช้ไม่ได้ถูกแมปกับฐานข้อมูล: ป้อนคำอธิบายรูปภาพที่นี่

ถ้าฉันจะสร้างผู้ใช้:

USE TempDB
GO
CREATE USER [Domain\BI360Users] FOR LOGIN [DOMAIN\BI360Users]
GO

RED 'x' หายไป: ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นจึงปรากฏว่าไม่มีผู้ใช้แม้ว่าการแสดงหน้าจอจะแสดงให้เห็นอย่างชัดเจนข้างต้น

นี่คือข้อมูลจาก sysusers: ป้อนคำอธิบายรูปภาพที่นี่


นี่คือสิ่งที่ฉันพูดถึง แต่คุณคิดผิดว่า "ผู้ใช้ไม่ได้แมปกับฐานข้อมูล" หลังจากที่คุณเพิ่มกลุ่ม Win เข้ากับบทบาทฐานข้อมูลเรียบร้อยแล้วในขณะนี้ผู้ใช้และสคีมาจะถูกสร้างขึ้น
เซพปิ

1
คุณต้องทำสิ่งอื่นนอกเหนือจากการเพิ่มกลุ่มโดเมนให้กับบทบาทฐานข้อมูลเพราะนั่นไม่ได้ผล (เว้นแต่ว่าคุณใช้ SQL Server รุ่นเก่า) และแม้กระทั่งในสถานการณ์นี้GRANT CONNECTตามคำแนะนำดั้งเดิมของฉันแนะนำควรแก้ไขปัญหา
Aaron Bertrand

0

ผมมีปัญหาเหมือนกัน. ฉันแก้ไขโดยการเปลี่ยนสถานะ 'เข้าสู่ระบบ' เป็น 'เปิดใช้งาน' ในส่วนสถานะของคุณสมบัติผู้ใช้ใน 'ความปลอดภัย / การเข้าสู่ระบบของฐานข้อมูลเซิร์ฟเวอร์ SQL ของฉัน ป้อนคำอธิบายรูปภาพที่นี่

เครื่องหมายสีแดงหายไปหลังจากเปลี่ยนสถานะนี้


-3

Red X หมายถึงการเข้าสู่ระบบถูกปิดใช้งานด้วยใน SQL Server


ขอบคุณ แต่พวกเขาเปิดใช้งาน
Michael Kirkpatrick

ผู้ใช้ไม่สามารถปิดการใช้งาน
Aaron Bertrand

บัญชีมีอยู่ในโฟลเดอร์เข้าสู่ระบบที่ระดับอินสแตนซ์หรือไม่ ถ้ามันจะเรียกใช้คำสั่ง "สร้างผู้ใช้ [YourLogin] สำหรับเข้าสู่ระบบ [YourLogin]" w / ในฐานข้อมูลที่เป็นปัญหา Red X ควรหายไป
Goforebroke
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.