2010-01-06 62 views
0

我有一個用戶可以在sql server中登錄。現在我需要在數據庫中添加用戶,但是我不確定該用戶是否已經存在於數據庫中。 所以我需要腳本,它會檢查用戶是否存在於數據庫中,如果它不應該將該用戶添加到該數據庫中。在數據庫中添加用戶?

我該怎麼做?

回答

1

我覺得這工作:

IF DATABASE_PRINCIPAL_ID( '登錄')IS NULL
BEGIN
CREATE USER [用戶名]登錄[登錄]
END

^這僅適用如果數據庫中的用戶名與登錄名相同。

0

做一個SELECT COUNT(*),並查看是否得到一個0或1。

1

你不能有重複的用戶,所以你可以只嘗試和創建和處理錯誤,如果它已經存在。

+0

@Paul Creasey,OP不希望有重複的用戶,因此這篇文章。你的回答只是重複OP所說的。 – 2010-01-06 20:05:28

+0

@Helen,不可能插入一個重複的用戶,sys.database_principals.name有一個唯一的約束。我只是提供一種替代方法。 – 2010-01-06 20:13:25

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'); 

注意,用戶可以訪問已經通過組和角色成員資格,但這是一個單獨的主題。

相關問題