2009-07-29 13 views

答えて

58
SELECT DATABASE_PRINCIPAL_ID('role') 
--or 
IF DATABASE_PRINCIPAL_ID('role') IS NULL 

USER_IDは廃止される可能性があります。 CREATE ROLEはSQL 2005+を示します。それでいいです。

+0

@Klaus:同じ名前のロール+ユーザーを作成してみてください。それは失敗するでしょう。 https://msdn.microsoft.com/en-us/library/ms187328.aspx "name" colunは一意です – gbn

+1

良い点。はい、名前はユーザー、グループ、およびロール全体で一意である必要があります。以前のコメントを削除しました。ありがとう。 –

23
if not exists (select 1 from sys.database_principals where name='role' and Type = 'R') 
begin 
CREATE ROLE role 
    AUTHORIZATION MyUser; 
end 
+3

同じ「ロール」名を持つユーザーがいる場合、これは失敗します。奇妙ですが、 "= 'R'"を取り除く必要があります100% – gbn

+0

@Klaus私はこれと何をしなければなりませんか? – gbn

関連する問題