2016-04-16 26 views
3

現在SQL Serverにログインしているユーザーがデータベースを作成する権限を持っているかどうかを確認します。ユーザーにCREATE DATABASE権限があるかどうかを確認

私は、次のステートメントを試してみた:私は実際に作成する権限を持っているが

SELECT HAS_PERMS_BY_NAME(db_name(), 'DATABASE', 'CREATE')

SELECT HAS_PERMS_BY_NAME(null, 'DATABASE', 'CREATE')

SELECT HAS_PERMS_BY_NAME(null, null, 'CREATE DATABASE')

しかし、それらのひとつひとつの1は、NULL代わりの1を返します。新しいデータベース。

私はそれが1を返す、SELECT HAS_PERMS_BY_NAME(null, null, 'VIEW SERVER STATE');を実行して1を返す必要がありますと仮定:)

私は何をしないのですか?

答えて

1

ちょうどfound itかもしれません。私のテストシステムで

SELECT IS_SRVROLEMEMBER ('dbcreator')

+0

私はそれがうまくいくとは思わない。具体的には、データベースを作成する権限を付与するという方法のみをチェックします。 –

+0

@BenThulあなたはそれについて本当ですか?ドキュメントには、「SQL Serverログインが指定されたサーバーロールのメンバであるかどうかを示します。それがCREATE DATABASE権限を持つ役割です。 – SeToY

+0

右。しかし、もし私が 'someLogin'にデータベースを作成する権限を与えたら? –

1

、私は正常にこのコマンドを実行することができるよ:

SELECT has_perms_by_name(null, null, 'CREATE ANY DATABASE'); 

許可がCREATE DATABASEよりもわずかに異なっているが、あなたのために働くかもしれません。

0
SELECT HAS_PERMS_BY_NAME(NULL, 'DATABASE', 'CREATE DATABASE') 
関連する問題