SQL ServerはCREATE TABLE権限を付与しましたが、テーブルを作成できませんでした。


SQL Serverでは、ユーザーにklbがテーブルを作成する権限を持っていることを付与したいですが、データベースのキャラクターdb_は与えたくないです。ddladminは、その権限を拡大するので、次の権限を付与してもいいですか?以下の通りです

USE AdventureWorks2014;
GO
GRANT CREATE TABLE TO klb;
このように授権すればいいですか?答えはこのように授権するとエラーが発生します。「The specified schema name"dbo"ether does not exist or you dot have permission to use it.」

次の権限を付与してください。登録名klbこそテーブルを作成することができます。

USE AdventureWorks2014;
GO
GRANT ALTER ON SCHEMA::dbo TO klb
しかし、登録名klbの権限を拡大します。(一回りして、また元の道に戻ります。)実際には、SQL Serverでユーザーモードを新規作成すれば、この問題を解決できます。

CREATE SCHEMA test AUTHORIZATION klb
対応するユーザモードが既に存在する場合

USE AdventureWorks2014;

GO

GRANT ALTER ON SCHEMA::test TO klb
上記のように授権した後、次のスクリプトと比較すると、klbはtestというモードで表を作成することができますが、dboというモードで表を作成することはできません。実はこれもSQL Serverユーザーモード分離設計の原因です。

CREATE TABLE dbo.TEST (id INT); --  
GO
CREATE TABLE test.TEST (id INT);--  
GO
以上、SQL Serverに関してCREATE TABLE権限を付与しましたが、表を作ることができない文章はここまで紹介しました。SQL Serverは表の内容を作成できません。以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。