次の方法で共有


データベース スキーマの作成

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Warehouse in Microsoft Fabric

この記事では、SQL Server Management Studio または Transact-SQL を使用して、SQL Server でスキーマを作成する方法について説明します。

アクセス許可

  • スキーマを作成するには、データベースに対する CREATE SCHEMA 権限が必要です。

  • 別のユーザーを、作成されるスキーマの所有者として指定する場合、呼び出し元は、そのユーザーに対する IMPERSONATE 権限を持っている必要があります。 データベース ロールを所有者として指定する場合、呼び出し元は、データベース ロールのメンバーシップまたはデータベース ロールに対する ALTER アクセス許可のいずれかを持っている必要があります。

SQL Server Management Studio を使用したスキーマの作成

  1. オブジェクト エクスプローラーで、 [データベース] フォルダーを展開します。

  2. 新しいデータベース スキーマを作成するデータベースを展開します。

  3. [セキュリティ] フォルダーを右クリックし、 [新規作成]をポイントして、 [スキーマ]をクリックします。

  4. [スキーマ - 新規作成] ダイアログ ボックスの [全般] ページで、 [スキーマ名] ボックスに新しいスキーマの名前を入力します。

  5. [スキーマの所有者] ボックスに、スキーマを所有するデータベース ユーザーまたはロールの名前を入力します。 または、[検索] を選択して [ロールとユーザーの検索] ダイアログ ボックスを開きます。

  6. [OK] を選択します。

Note

Azure SQL Database または Azure Synapse Analytics に対する SSMS を使用してスキーマを作成している場合、ダイアログ ボックスは表示されません。 生成されたスキーマ テンプレート作成 T-SQL ステートメントを実行する必要があります。

[スキーマ - 新規] ダイアログ ボックスには、[権限][拡張プロパティ] という 2 つのページもあり、それぞれにオプションが用意されています。

  • [権限] ページには、すべてのセキュリティ保護可能なリソースと、ログインに付与できる、セキュリティ保護可能なリソースに対する権限が一覧表示されます。

  • [拡張プロパティ] ページでは、カスタム プロパティをデータベース ユーザーに追加できます。

Transact-SQL を使用してスキーマを作成する

  1. オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。

  2. 標準バーで、 [新しいクエリ] を選択します。

  3. 次の例では、Chains という名前のスキーマを作成した後、Sizes という名前のテーブルを作成します。

    CREATE SCHEMA Chains;
    
    GO
    
    CREATE TABLE Chains.Sizes
    (
        ChainID INT,
        width DECIMAL (10, 2)
    );
    
  4. その他のオプションは、単一のステートメントで実行できます。 次の例では、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
    
  5. 現在のデータベース内のスキーマを表示するには、次のステートメントを実行します。

    SELECT *
    FROM sys.schemas;
    

制限事項と制約事項

  • 新しいスキーマは、データベース ユーザー、データベース ロール、またはアプリケーション ロールのいずれかのデータベース レベルのプリンシパルが所有します。 スキーマ内で作成されたオブジェクトはスキーマの所有者によって所有され、sys.objectsNULLprincipal_id を持ちます。スキーマに含まれるオブジェクトの所有権はデータベースレベルのプリンシパルに譲渡できますが、スキーマ所有者は常にスキーマ内のオブジェクトに対する CONTROL アクセス許可を保持します。

  • データベース オブジェクトを作成する場合に、有効なドメイン プリンシパル (ユーザーまたはグループ) をオブジェクト所有者として指定すると、ドメイン プリンシパルがスキーマとしてデータベースに追加されます。 新しいスキーマは、そのドメイン プリンシパルが所有します。