SQL Server 2008でセキュリティを使用して、特定のスキーマ内でのみ、ユーザーにCREATE TABLE権限を付与しようとしています。 CREATE TABLE権限はデータベースレベルでのみ適用されますか?
スキーマ内でのみテーブルを作成するようにユーザーを制限できますか?
私はもう試した:
USE [databasename]
GRANT CONTROL ON Schema :: [schemaname] TO [username]
GO
そして
USE [databasename]
GRANT ALTER ON Schema :: [schemaname] TO [username]
GO
ただし、ユーザーはまだターゲットスキーマ内にテーブルを作成できません。これを実行するまでは、ユーザーがテーブルを作成できるようにする必要があります。
USE [databasename]
GRANT CREATE TABLE to [username]
GO
SQL Server 2008のヘルプによると:
データベースのCREATE TABLE権限と、テーブルが作成されるスキーマのALTER権限が必要です。
テストデータベースでEXECUTE ASを使用してこれをテストしたところ、ALTER権限を持つスキーマにテーブルを作成できましたが、dboスキーマ(ALTER権限を付与しなかった)には作成できませんでした。したがって、スキーマに対するALTER権限で自由になりすぎない限り、これがその方法です。
特定のデータベースの特定のユーザーにテーブルを作成する権限を与えるには、CREATE TABLE権限だけでなく、スキーマに対するALTER権限も必要です。 DBO。
USE [databasename]
GRANT ALTER ON Schema :: [schemaname] TO [username]
GRANT CREATE TABLE TO [username]
GO
例えば;
USE db_mydatabase
GRANT ALTER ON Schema :: DBO TO user_mydatabase
GRANT CREATE TABLE TO user_mydatabase
GO
2008 R2のスキーマに適用される権限のドキュメントには、そのような権限については何もありません。 http://msdn.Microsoft.com/en-us/library/ms187940.aspx
したがって、私は結論付けます。できません。テーブルの作成はデータベースレベルでのみ制御できます(これはすべてのセキュリティ保護可能なものに適用されるようです)。
できますよ。 user1がある場合は、そのデフォルトのスキーマをuser1としても定義します。このユーザーにデータベース内のCREATE TABLE権限を付与します。それでおしまい。 user1は、user1スキーマ内でのみテーブルを作成できます。