0

SQLサーバーにログインできるユーザーがいます。データベースにユーザーを追加する必要がありますが、そのユーザーがデータベースに既に存在するかどうかはわかりません。したがって、ユーザーがデータベースに存在するかどうかを確認するスクリプトが必要です。存在しない場合は、そのユーザーをそのデータベースに追加する必要があります。

どうやってやるの?

4

4 に答える 4

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

ユーザーは、グループおよびロールのメンバーシップを通じて既にアクセスできる場合がありますが、それは別のトピックであることに注意してください。

于 2010-01-06T19:49:53.960 に答える
1

重複したユーザーを持つことはできないため、作成してみて、既に存在する場合はエラーを処理することができます。

于 2010-01-06T19:43:33.840 に答える
1

私はこれがうまくいったと思います:

IF DATABASE_PRINCIPAL_ID('login') IS NULL
BEGIN
CREATE USER [ユーザー名] FOR LOGIN [ログイン]
END

^ これは、データベースのユーザー名がログインと同じ場合にのみ機能します。

于 2010-01-06T19:53:57.150 に答える
0

SELECT COUNT(*)を実行し、0 と 1 のどちらが得られるかを確認します。

于 2010-01-06T19:42:41.067 に答える