我有一個用戶可以在sql server中登錄。現在我需要在數據庫中添加用戶,但是我不確定該用戶是否已經存在於數據庫中。 所以我需要腳本,它會檢查用戶是否存在於數據庫中,如果它不應該將該用戶添加到該數據庫中。在數據庫中添加用戶?
我該怎麼做?
我有一個用戶可以在sql server中登錄。現在我需要在數據庫中添加用戶,但是我不確定該用戶是否已經存在於數據庫中。 所以我需要腳本,它會檢查用戶是否存在於數據庫中,如果它不應該將該用戶添加到該數據庫中。在數據庫中添加用戶?
我該怎麼做?
我覺得這工作:
IF DATABASE_PRINCIPAL_ID( '登錄')IS NULL
BEGIN
CREATE USER [用戶名]登錄[登錄]
END
^這僅適用如果數據庫中的用戶名與登錄名相同。
做一個SELECT COUNT(*)
,並查看是否得到一個0或1。
你不能有重複的用戶,所以你可以只嘗試和創建和處理錯誤,如果它已經存在。
查找到用戶目錄視圖,sys.database_principals
:
select * from [dbname].sys.database_principals
where name = 'loginname';
是100%準確的,你需要通過用戶的SID檢查,叫不上名字:
select * from [dbname].sys.database_principals
where sid = SUSER_SID('loginame');
注意,用戶可以訪問已經通過組和角色成員資格,但這是一個單獨的主題。
@Paul Creasey,OP不希望有重複的用戶,因此這篇文章。你的回答只是重複OP所說的。 – 2010-01-06 20:05:28
@Helen,不可能插入一個重複的用戶,sys.database_principals.name有一個唯一的約束。我只是提供一種替代方法。 – 2010-01-06 20:13:25