SQLサーバーにログインできるユーザーがいます。データベースにユーザーを追加する必要がありますが、そのユーザーがデータベースに既に存在するかどうかはわかりません。したがって、ユーザーがデータベースに存在するかどうかを確認するスクリプトが必要です。存在しない場合は、そのユーザーをそのデータベースに追加する必要があります。
どうやってやるの?
SQLサーバーにログインできるユーザーがいます。データベースにユーザーを追加する必要がありますが、そのユーザーがデータベースに既に存在するかどうかはわかりません。したがって、ユーザーがデータベースに存在するかどうかを確認するスクリプトが必要です。存在しない場合は、そのユーザーをそのデータベースに追加する必要があります。
どうやってやるの?
ユーザー カタログ ビューを調べます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');
ユーザーは、グループおよびロールのメンバーシップを通じて既にアクセスできる場合がありますが、それは別のトピックであることに注意してください。
重複したユーザーを持つことはできないため、作成してみて、既に存在する場合はエラーを処理することができます。
私はこれがうまくいったと思います:
IF DATABASE_PRINCIPAL_ID('login') IS NULL
BEGIN
CREATE USER [ユーザー名] FOR LOGIN [ログイン]
END
^ これは、データベースのユーザー名がログインと同じ場合にのみ機能します。
SELECT COUNT(*)
を実行し、0 と 1 のどちらが得られるかを確認します。