ฉันสร้างกลุ่มโฆษณาใหม่สองกลุ่มและเพิ่มพวกเขาเป็นผู้ใช้ฐานข้อมูล แต่พวกเขาแสดงด้วย RED X สิ่งนี้หมายความว่าอย่างไร ขอบคุณ
ฉันสร้างกลุ่มโฆษณาใหม่สองกลุ่มและเพิ่มพวกเขาเป็นผู้ใช้ฐานข้อมูล แต่พวกเขาแสดงด้วย 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!
(คุณอาจต้องรีเฟรช 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 บนฐานข้อมูลระบบที่แน่นอน ไม่สนใจสิ่งนั้นและปล่อยให้อยู่ตามลำพัง
จากหัวข้อ :sys.sysusers
ฉันต้องการเพียงแค่เพิ่มคำตอบของแอรอนเบอร์ทรันด์ที่ดูแลเรื่องนี้:
หมายความว่าผู้ใช้ไม่มีสิทธิ์ในการเชื่อมต่อกับฐานข้อมูล (คุณไม่สามารถปิดการใช้งานผู้ใช้เพียงเข้าสู่ระบบเท่านั้น) ฉันไม่แน่ใจว่า ผู้ใช้ของคุณถูกสร้างอย่างไร ...
สิ่งนี้สามารถเกิดขึ้นได้กับWindows
ผู้ว่าจ้างในวิธีต่อไปนี้:
Windows
การเข้าสู่ระบบมีอยู่ในระดับเซิร์ฟเวอร์ แต่ไม่ได้แมปกับฐานข้อมูลที่เป็นปัญหาใครบางคนตัดสินใจที่จะgrant
/ deny
อนุญาตบางส่วนให้อาจารย์ใหญ่ของ Windows นี้ที่ระดับฐานข้อมูล ในกรณีนี้ผู้ใช้ / สคีที่เกี่ยวข้องจะถูกสร้างขึ้นในฐานข้อมูลและแถวที่มีนี้grant
/ จะถูกเขียนไปdeny
sys.database_permissions
สิ่งนี้จะไม่ให้สิทธิ์การเข้าถึงฐานข้อมูลนี้เนื่องจากผู้ใช้ที่เพิ่งสร้างขึ้นใหม่ยังคงไม่connect
ได้รับอนุญาตและคุณจะเห็นมันใน OE ด้วยลูกศรสีแดง
ฉันคิดว่าฉันคิดว่าทำไมมันเกิดขึ้น
สถานการณ์:
โดเมน \ 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
ดังนั้นจึงปรากฏว่าไม่มีผู้ใช้แม้ว่าการแสดงหน้าจอจะแสดงให้เห็นอย่างชัดเจนข้างต้น
GRANT CONNECT
ตามคำแนะนำดั้งเดิมของฉันแนะนำควรแก้ไขปัญหา
Red X หมายถึงการเข้าสู่ระบบถูกปิดใช้งานด้วยใน SQL Server