數據庫使用者上的 RED X 是什麼意思?
我創建了兩個新的 AD 組並將它們添加為數據庫的使用者,但它們的圖示顯示為紅色 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];
當然,您需要應用更多權限,具體取決於您需要它們能夠在數據庫中執行的操作。
可能有其他更晦澀的方法可以進入這種狀態(例如,在沒有實際添加使用者的情況下將域組添加到數據庫中的角色,如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];
然後,使用者確實出現在這些視圖中,並且確實在對象資源管理器中顯示為使用者,並帶有紅色 x,因為
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
某些系統數據庫上的來賓帳戶除外。忽略這一點,讓他們獨自一人。
我只想對 Aaron Bertrand 的回答做一個補充:
這意味著使用者沒有連接到數據庫的權限(您不能禁用使用者,只能登錄)。我不確定您的 使用者是如何創建的…
Windows
這只能通過以下方式發生在委託人身上:
Windows
登錄存在於伺服器級別,但未映射到相關數據庫,有人決定grant
/deny
在數據庫級別對此 Windows 主體授予一些權限。在這種情況下,將在數據庫中創建相應的使用者/模式,並將帶有此grant
/的行deny
寫入sys.database_permissions
. 這不會授予對該數據庫的任何訪問權限,因為新創建的使用者仍然缺少該connect
權限,您將在 OE 中看到它帶有紅色箭頭。