データベース スキーマの作成Create a Database Schema

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

このトピックでは、 SQL Server 2019 (15.x)SQL Server 2019 (15.x)SQL Server Management StudioSQL Server Management Studio または Transact-SQLTransact-SQLを使用して、スキーマを作成する方法について説明します。This topic describes how to create a schema in SQL Server 2019 (15.x)SQL Server 2019 (15.x) by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

はじめにBefore You Begin

制限事項と制約事項Limitations and Restrictions

  • 新しいスキーマは、データベース ユーザー、データベース ロール、またはアプリケーション ロールのいずれかのデータベース レベルのプリンシパルが所有します。The new schema is owned by one of the following database-level principals: database user, database role, or application role. スキーマ内に作成されるオブジェクトはスキーマの所有者が所有し、 sys.objects 内の principal_idは NULL になります。Objects created within a schema are owned by the owner of the schema, and have a NULL principal_id in sys.objects. スキーマが含まれるオブジェクトの所有権は、データベース レベルのプリンシパルに譲渡できますが、スキーマ内のオブジェクトに対する CONTROL 権限は常にスキーマ所有者が保持します。Ownership of schema-contained objects can be transferred to any database-level principal, but the schema owner always retains CONTROL permission on objects within the schema.

  • データベース オブジェクトを作成する場合に、有効なドメイン プリンシパル (ユーザーまたはグループ) をオブジェクト所有者として指定すると、ドメイン プリンシパルがスキーマとしてデータベースに追加されます。When creating a database object, if you specify a valid domain principal (user or group) as the object owner, the domain principal is added to the database as a schema. 新しいスキーマは、そのドメイン プリンシパルが所有します。The new schema is owned by that domain principal.

セキュリティSecurity

PermissionsPermissions

  • データベースに対する CREATE SCHEMA 権限が必要です。Requires CREATE SCHEMA permission on the database.

  • 別のユーザーを、作成されるスキーマの所有者として指定する場合、呼び出し元は、そのユーザーに対する IMPERSONATE 権限を持っている必要があります。To specify another user as the owner of the schema being created, the caller must have IMPERSONATE permission on that user. データベース ロールを所有者として指定する場合、呼び出し元は、データベース ロールのメンバーシップまたはデータベース ロールに対する ALTER アクセス許可のいずれかを持っている必要があります。If a database role is specified as the owner, the caller must meet one of the following criteria: membership in the role or ALTER permission on the role.

SQL Server Management Studio の使用Using SQL Server Management Studio

スキーマを作成するにはTo create a schema
  1. オブジェクト エクスプローラーで、 [データベース] フォルダーを展開します。In Object Explorer, expand the Databases folder.

  2. 新しいデータベース スキーマを作成するデータベースを展開します。Expand the database in which to create the new database schema.

  3. [セキュリティ] フォルダーを右クリックし、 [新規作成] をポイントして、 [スキーマ] をクリックします。Right-click the Security folder, point to New, and select Schema.

  4. [スキーマ - 新規作成] ダイアログ ボックスの [全般] ページで、 [スキーマ名] ボックスに新しいスキーマの名前を入力します。In the Schema - New dialog box, on the General page, enter a name for the new schema in the Schema name box.

  5. [スキーマの所有者] ボックスに、スキーマを所有するデータベース ユーザーまたはロールの名前を入力します。In the Schema owner box, enter the name of a database user or role to own the schema. または、 [検索] をクリックして [ロールとユーザーの検索] ダイアログ ボックスを開きます。Alternately, click Search to open the Search Roles and Users dialog box.

  6. [OK] をクリックします。Click OK.

注意

Azure SQL Database または Azure SQL Data Warehouse に対する SSMS を使用してスキーマを作成している場合、ダイアログ ボックスは表示されません。A dialog box will not appear if you are creating a Schema using SSMS against an Azure SQL Database or an Azure SQL Data Warehouse. 生成されたスキーマ テンプレート作成 T-SQL ステートメントを実行する必要があります。You will need to run the Create Schema Template T-SQL Statement that is generated.

追加オプションAdditional Options

[スキーマ - 新規作成] ダイアログ ボックスには次の 2 つのページもあり、それぞれにオプションが用意されています: [権限][拡張プロパティ]The Schema- New dialog box also offers options on two additional pages: Permissions and Extended Properties.

  • [権限] ページには、すべてのセキュリティ保護可能なリソースと、ログインに付与できる、セキュリティ保護可能なリソースに対する権限が一覧表示されます。The Permissions page lists all possible securables and the permissions on those securables that can be granted to the login.

  • [拡張プロパティ] ページでは、カスタム プロパティをデータベース ユーザーに追加できます。The Extended properties page allows you to add custom properties to database users.

Transact-SQL の使用Using Transact-SQL

スキーマを作成するにはTo create a schema

  1. オブジェクト エクスプローラーで、 データベース エンジンDatabase Engineのインスタンスに接続します。In Object Explorer, connect to an instance of データベース エンジンDatabase Engine.

  2. [標準] ツール バーの [新しいクエリ] をクリックします。On the Standard bar, click New Query.

  3. 次の例では、Chains という名前のスキーマを作成した後、Sizes という名前のテーブルを作成します。The following example creates a schema named Chains, and then creates a table named Sizes.

    CREATE SCHEMA Chains;
    GO
    CREATE TABLE Chains.Sizes (ChainID int, width dec(10,2));
    
  4. 追加オプションは、単一のステートメントで実行できます。Additional options can be performed in a single statement. 次の例では、Annik が所有するスキーマ Sprockets を作成します。このスキーマにはテーブル NineProngs が含まれます。The following example creates the schema Sprockets owned by Annik that contains table NineProngs. このステートメントは、Mandar に対して SELECT を許可し、Prasanna に対して SELECT を拒否します。The statement grants SELECT to Mandar and denies SELECT to Prasanna.

    CREATE SCHEMA Sprockets AUTHORIZATION Annik  
        CREATE TABLE NineProngs (source int, cost int, partnumber int)  
        GRANT SELECT ON SCHEMA::Sprockets TO Mandar  
        DENY SELECT ON SCHEMA::Sprockets TO Prasanna;  
    GO  
    
  5. このデータベースのスキーマを見るには、次のステートメントを実行します。Execute the following statement, to view the schemas in this database:

    SELECT * FROM sys.schemas;
    

詳細については、「CREATE SCHEMA (Transact-SQL)」を参照してください。For more information, see CREATE SCHEMA (Transact-SQL).