データベース スキーマの作成
適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Warehouse in Microsoft Fabric
この記事では、SQL Server Management Studio または Transact-SQL を使用して、SQL Server でスキーマを作成する方法について説明します。
アクセス許可
スキーマを作成するには、データベースに対する CREATE SCHEMA 権限が必要です。
別のユーザーを、作成されるスキーマの所有者として指定する場合、呼び出し元は、そのユーザーに対する IMPERSONATE 権限を持っている必要があります。 データベース ロールを所有者として指定する場合、呼び出し元は、データベース ロールのメンバーシップまたはデータベース ロールに対する ALTER アクセス許可のいずれかを持っている必要があります。
SQL Server Management Studio を使用したスキーマの作成
オブジェクト エクスプローラーで、 [データベース] フォルダーを展開します。
新しいデータベース スキーマを作成するデータベースを展開します。
[セキュリティ] フォルダーを右クリックし、 [新規作成]をポイントして、 [スキーマ]をクリックします。
[スキーマ - 新規作成] ダイアログ ボックスの [全般] ページで、 [スキーマ名] ボックスに新しいスキーマの名前を入力します。
[スキーマの所有者] ボックスに、スキーマを所有するデータベース ユーザーまたはロールの名前を入力します。 または、[検索] を選択して [ロールとユーザーの検索] ダイアログ ボックスを開きます。
[OK] を選択します。
Note
Azure SQL Database または Azure Synapse Analytics に対する SSMS を使用してスキーマを作成している場合、ダイアログ ボックスは表示されません。 生成されたスキーマ テンプレート作成 T-SQL ステートメントを実行する必要があります。
[スキーマ - 新規] ダイアログ ボックスには、[権限] と [拡張プロパティ] という 2 つのページもあり、それぞれにオプションが用意されています。
[権限] ページには、すべてのセキュリティ保護可能なリソースと、ログインに付与できる、セキュリティ保護可能なリソースに対する権限が一覧表示されます。
[拡張プロパティ] ページでは、カスタム プロパティをデータベース ユーザーに追加できます。
Transact-SQL を使用してスキーマを作成する
オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。
標準バーで、 [新しいクエリ] を選択します。
次の例では、
Chains
という名前のスキーマを作成した後、Sizes
という名前のテーブルを作成します。CREATE SCHEMA Chains; GO CREATE TABLE Chains.Sizes ( ChainID INT, width DECIMAL (10, 2) );
その他のオプションは、単一のステートメントで実行できます。 次の例では、
Sprockets
が所有するスキーマJoe
を作成します。このスキーマにはテーブルNineProngs
が含まれます。 このステートメントでは、SELECT
に対してBob
を許可し、SELECT
に対してJohn
を拒否します。CREATE SCHEMA Sprockets AUTHORIZATION Joe; GO CREATE TABLE NineProngs ( source INT, cost INT, partnumber INT ); GO GRANT SELECT ON SCHEMA::Sprockets TO Bob; GO DENY SELECT ON SCHEMA::Sprockets TO John; GO
現在のデータベース内のスキーマを表示するには、次のステートメントを実行します。
SELECT * FROM sys.schemas;
制限事項と制約事項
新しいスキーマは、データベース ユーザー、データベース ロール、またはアプリケーション ロールのいずれかのデータベース レベルのプリンシパルが所有します。 スキーマ内で作成されたオブジェクトはスキーマの所有者によって所有され、
sys.objects
でNULL
のprincipal_id
を持ちます。スキーマに含まれるオブジェクトの所有権はデータベースレベルのプリンシパルに譲渡できますが、スキーマ所有者は常にスキーマ内のオブジェクトに対する CONTROL アクセス許可を保持します。データベース オブジェクトを作成する場合に、有効なドメイン プリンシパル (ユーザーまたはグループ) をオブジェクト所有者として指定すると、ドメイン プリンシパルがスキーマとしてデータベースに追加されます。 新しいスキーマは、そのドメイン プリンシパルが所有します。