次の方法で共有


データベースを作成

新しいデータベースを作成します。

使用している特定の SQL バージョンの構文、引数、解説、アクセス許可、および例については、次のいずれかのタブを選択します。

製品を選択する

次の行で、興味のある製品の名前を選択すると、その製品の情報のみが表示されます。

* SQL Server *

SQL Server

概要

SQL Server では、このステートメントは、新しいデータベース、使用されるファイル、そのファイル グループを作成します。 また、データベース スナップショットを作成したり、別のデータベースのデタッチされたファイルからデータベースを作成するためにデータベース ファイルをアタッチするためにも使用できます。

構文

データベースを作成します。

構文表記規則の詳細については、「Transact-SQL 構文表記規則」を参照してください。

CREATE DATABASE database_name
[ CONTAINMENT = { NONE | PARTIAL } ]
[ ON
      [ PRIMARY ] <filespec> [ , ...n ]
      [ , <filegroup> [ , ...n ] ]
      [ LOG ON <filespec> [ , ...n ] ]
]
[ COLLATE collation_name ]
[ WITH <option> [ , ...n ] ]
[ ; ]

<option> ::=
{
      FILESTREAM ( <filestream_option> [ , ...n ] )
    | DEFAULT_FULLTEXT_LANGUAGE = { lcid | language_name | language_alias }
    | DEFAULT_LANGUAGE = { lcid | language_name | language_alias }
    | NESTED_TRIGGERS = { OFF | ON }
    | TRANSFORM_NOISE_WORDS = { OFF | ON }
    | TWO_DIGIT_YEAR_CUTOFF = <two_digit_year_cutoff>
    | DB_CHAINING { OFF | ON }
    | TRUSTWORTHY { OFF | ON }
    | PERSISTENT_LOG_BUFFER = ON ( DIRECTORY_NAME = 'path-to-directory-on-a-DAX-volume' )
    | LEDGER = { ON | OFF }
}

<filestream_option> ::=
{
      NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
    | DIRECTORY_NAME = 'directory_name'
}

<filespec> ::=
{
(
    NAME = logical_file_name ,
    FILENAME = { 'os_file_name' | 'filestream_path' }
    [ , SIZE = size [ KB | MB | GB | TB ] ]
    [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]
    [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ]
)
}

<filegroup> ::=
{
FILEGROUP filegroup name [ [ CONTAINS FILESTREAM ] [ DEFAULT ] | CONTAINS MEMORY_OPTIMIZED_DATA ]
    <filespec> [ , ...n ]
}

データベースをアタッチする:

CREATE DATABASE database_name
    ON <filespec> [ , ...n ]
    FOR { { ATTACH [ WITH <attach_database_option> [ , ...n ] ] }
        | ATTACH_REBUILD_LOG }
[ ; ]

<attach_database_option> ::=
{
      <service_broker_option>
    | RESTRICTED_USER
    | FILESTREAM ( DIRECTORY_NAME = { 'directory_name' | NULL } )
}

<service_broker_option> ::=
{
    ENABLE_BROKER
  | NEW_BROKER
  | ERROR_BROKER_CONVERSATIONS
}

データベース スナップショットを作成します。

CREATE DATABASE database_snapshot_name
    ON
    (
        NAME = logical_file_name ,
        FILENAME = 'os_file_name'
    ) [ , ...n ]
    AS SNAPSHOT OF
[ ; ]

引数

database_name

新しいデータベースの名前。 データベース名は、SQL Server のインスタンス内で一意であり、識別子のルールに従っている必要があります。

ログ ファイルに論理名が指定されていない限り、database_nameは最大 128 文字にすることができます。 論理ログ ファイル名が指定されていない場合、SQL Server は 、database_name にサフィックスを追加することで、ログの logical_file_nameos_file_nameを生成します。 生成された論理ファイル名が 128 文字を超えないようにするため、database_name は 123 文字に制限されます。

データ ファイル名が指定されていない場合、SQL Server は database_namelogical_file_nameos_file_nameの両方として使用します。 既定のパスはレジストリから取得されます。 既定のパスは、Management Studio の [サーバーのプロパティ] ([データベースの設定] ページ) 内で変更できます。 既定のパスを変更するには、SQL Server を再起動する必要があります。

封じ込め = { なし |パーシャル }

適用対象: SQL Server 2012 (11.x) 以降のバージョン

データベースの包含状態を指定します。

  • NONE = 非包含データベース。
  • PARTIAL = 部分的に包含されたデータベース。

オン

データベースのデータ部分の格納に使用するディスク ファイル (データ ファイル) を明示的に定義するように指定します。 ON は、プライマリ ファイル グループのデータ ファイルを定義する <filespec> 項目のコンマ区切りのリストが続く場合に必要です。 プライマリ ファイル グループ内のファイルの一覧の後には、ユーザー ファイル グループとそのファイルを定義する <filegroup> 項目の省略可能なコンマ区切りの一覧を指定できます。

原発

関連付けられた <filespec> リストがプライマリファイルを定義することを指定します。 プライマリ ファイル グループの <filespec> エントリで指定された最初のファイルがプライマリ ファイルになります。 データベースはプライマリ ファイルを 1 つだけ保有することができます。 詳細については、「 データベース ファイルとファイル グループ」を参照してください。

PRIMARYが指定されていない場合、CREATE DATABASE ステートメントにリストされている最初のファイルがプライマリ ファイルになります。

ログオンする

データベース ログの格納に使用するディスク ファイル (ログ ファイル) を明示的に定義するように指定します。 LOG ON その後に、ログファイルを定義する <filespec> 項目のカンマ区切りリストが続きます。 LOG ONが指定されていない場合、1 つのログ ファイルが自動的に作成されます。このログ ファイルのサイズは、データベースのすべてのデータ ファイルのサイズの合計の 25% または 512 KB のいずれか大きい方になります。 このファイルは既定のログ ファイルの場所に保存されます。 この場所の詳細については、「 データ ファイルとログ ファイルの既定の場所を表示または変更する」を参照してください。

LOG ON データベース スナップショットで指定できません。

照合 collation_name

データベースの既定の照合順序を指定します。 照合順序名には、Windows 照合順序名または SQL 照合順序名を指定できます。 指定しない場合は、データベースに SQL Server インスタンスの既定の照合順序が割り当てられます。 データベース スナップショットで照合順序名を指定することはできません。

照合順序名は、 FOR ATTACH 句または FOR ATTACH_REBUILD_LOG 句では指定できません。 アタッチされたデータベースの照合順序を変更する方法については、「 データベースの照合順序を設定または変更する」を参照してください。

Windows 照合順序名と SQL 照合順序名の詳細については、「 COLLATE」を参照してください。

包含データベースは、非包含データベースとは異なる方法で照合されます。 詳細については、「 包含データベースの照合順序」を参照してください。

WITH <オプション>

<filestream_option>

  • NON_TRANSACTED_ACCESS = { オフ |READ_ONLY |フル }

    適用対象: SQL Server 2012 (11.x) 以降のバージョン

    データベースに対する非トランザクション FILESTREAM アクセスのレベルを指定します。

    説明
    OFF 非トランザクション アクセスは無効です。
    READONLY このデータベース内の FILESTREAM データは、非トランザクション プロセスによって読み取ることができます。
    FULL FILESTREAM FileTable に対する完全な非トランザクション アクセスは有効です。
  • DIRECTORY_NAME = <directory_name>

    適用対象: SQL Server 2012 (11.x) 以降のバージョン

    Windows と互換性のあるディレクトリ名です。 この名前は、SQL Server インスタンス内のすべての Database_Directory 名の中で一意である必要があります。 一意性の比較では、SQL Server の照合順序の設定とは関係なく、大文字と小文字は区別されません。 このオプションは、このデータベース内に FileTable を作成する前に設定する必要があります。

    次のオプションは、 CONTAINMENTPARTIAL に設定されている場合にのみ使用できます。 CONTAINMENTNONE に設定されている場合は、エラーが発生します。

DEFAULT_FULLTEXT_LANGUAGE = <lcid> | <言語名> | <言語エイリアス>

適用対象: SQL Server 2012 (11.x) 以降のバージョン

このオプションの完全な説明については、「 サーバー構成: 既定のフルテキスト言語 」を参照してください。

DEFAULT_LANGUAGE = <lcid> | <言語名> | <言語エイリアス>

適用対象: SQL Server 2012 (11.x) 以降のバージョン

このオプションの完全な説明については、「 サーバー構成: 既定の言語 」を参照してください。

NESTED_TRIGGERS = { オフ |オン }

適用対象: SQL Server 2012 (11.x) 以降のバージョン

このオプションの詳細については、「 サーバー構成: 入れ子になったトリガー 」を参照してください。

TRANSFORM_NOISE_WORDS = { オフ |オン }

適用対象: SQL Server 2012 (11.x) 以降のバージョン

このオプションの詳細については、「 サーバー構成: ノイズワードを変換 する」を参照してください。

TWO_DIGIT_YEAR_CUTOFF = { 2049 | <1753年から9999年までの任意の年>

年を表す 4 桁の数字。 既定値は 2049 です。 このオプションの完全な説明については、「 サーバー構成: 2 桁の年のカットオフ 」を参照してください。

DB_CHAINING { オフ |オン }

ONが指定されている場合、データベースは、データベース間の所有権のソースまたはターゲットにすることができます。

OFF場合、データベースはデータベース間の所有権チェーンに参加できません。 既定値は、OFF です。

重要

SQL Server のインスタンスは、データベース間の所有権チェーン サーバー オプションが 0 (OFF) の場合に、この設定を認識します。 複数データベース間の所有権が 1 (ON) の場合、このオプションの値に関係なく、すべてのユーザー データベースがデータベース間の所有権チェーンに参加できます。 このオプションは、sp_configure を使用して設定します。

このオプションを設定するには、 sysadmin 固定サーバー ロールのメンバーシップが必要です。 DB_CHAINING オプションは、mastermodeltempdbのシステム データベースでは設定できません。

信頼できる { OFF |オン }

ONを指定すると、権限借用コンテキストを使用するデータベース モジュール (ビュー、ユーザー定義関数、ストアド プロシージャなど) は、データベースの外部のリソースにアクセスできます。

OFF場合、偽装コンテキスト内のデータベース モジュールは、データベースの外部のリソースにアクセスできません。 既定値は、OFF です。

TRUSTWORTHY は、データベースがアタッチされるたびに OFF に設定されます。

既定では、msdb データベースを除くすべてのシステム データベースTRUSTWORTHYOFFに設定されます。 modelおよびtempdb データベースの値は変更できません。 master データベースのONには、TRUSTWORTHY オプションを設定しないでください。

PERSISTENT_LOG_BUFFER = ON ( DIRECTORY_NAME = 'directory_name' )

適用対象: SQL Server 2017 (14.x) 以降のバージョン

このオプションを指定すると、ストレージ クラス メモリ (NVDIMM-N 不揮発性ストレージ、永続的ログ バッファーとも呼ばれます) によってバックアップされるディスク デバイス上のボリュームに、トランザクション ログ バッファーが作成されます。 詳細については、「ストレージ クラス メモリ を使用したトランザクション コミット待機時間の高速化の 」および「永続ログ バッファーをデータベースに追加する」を参照してください。

LEDGER = { ON |OFF }

ON に設定すると、台帳データベースが作成されます。ここでは、すべてのユーザー データの整合性が保護されます。 台帳データベースに作成できるのは、台帳テーブルだけです。 既定値は、OFF です。 LEDGER オプションの値は、データベースの作成後は変更できません。 詳細については、台帳データベースの構成に関するページを参照してください。

CREATE DATABASE ...FOR ATTACH [ with <attach_database_option> ]

既存のオペレーティング システム ファイルのセットをアタッチすることによりデータベースを作成するように指定します。 プライマリ・ファイルを指定する <filespec> ・エントリーが必要です。 必要な他の <filespec> エントリは、データベースが最初に作成されたときまたは最後にアタッチされたときとは異なるパスを持つファイルのエントリだけです。 これらのファイルには、 <filespec> エントリを指定する必要があります。

FOR ATTACH 必要:

  • すべてのデータ ファイル (MDF および NDF) が有効であること。
  • ログ ファイルが複数存在する場合は、これらがすべて使用可能であること。

読み取り/書き込みデータベースに現在使用できないログ ファイルが 1 つあり、 ATTACH 操作の前にユーザーなしでデータベースがシャットダウンされたか、トランザクションを開いていた場合、 FOR ATTACH は自動的にログ ファイルを再構築し、プライマリ ファイルを更新します。 これに対し、読み取り専用データベースの場合、プライマリ ファイルを更新できないため、ログを再構築できません。 そのため、読み取り専用データベースに使用できないログをアタッチする場合は、ログ ファイルまたは FOR ATTACH 句内のファイルを指定する必要があります。

より新しいバージョンの SQL Server によって作成されたデータベースは、以前のバージョンではアタッチできません。

SQL Server では、アタッチされているデータベースの一部であるフルテキスト ファイルがデータベースにアタッチされます。 フルテキスト カタログの新しいパスを指定するには、フルテキストのオペレーティング システム ファイル名を含めずに新しい場所を指定します。 詳細については、「」を参照してください。

FILESTREAM オプションが "ディレクトリ名" のデータベースをアタッチすると、SQL Server は Database_Directory 名が一意であることを確認するように求められます。 そうでない場合、 ATTACH 操作は失敗し、エラー FILESTREAM Database_Directory name is not unique in this SQL Server instance。 このエラーを回避するには、省略可能なパラメーターの directory_name をこの操作に渡す必要があります。

FOR ATTACH データベース スナップショットで指定できません。

FOR ATTACH では、 RESTRICTED_USER オプションを指定できます。 RESTRICTED_USER では、 db_owner 固定データベース ロールと dbcreator および sysadmin 固定サーバー ロールのメンバーのみがデータベースに接続できますが、その数は制限されません。 修飾されていないユーザーによる試行が拒否されます。

<service_broker_option>

データベースで Service Broker を使用している場合は、WITH <service_broker_option> 句のFOR ATTACHを使用します。

データベースの Service Broker メッセージ配信と Service Broker 識別子を制御します。 Service Broker オプションは、 FOR ATTACH 句が使用されている場合にのみ指定できます。

ENABLE_BROKER(ブローカーを有効化)

指定したデータベースに対して Service Broker を有効にします。 つまり、メッセージ配信が開始され、is_broker_enabled カタログ ビュー内で sys.databases が true に設定されます。 データベースは、既存の Service Broker 識別子を保持します。

NEW_BROKER

service_broker_guid および復元されたデータベースの両方で新しい sys.databases 値を作成し、 すべてのメッセージ交換エンドポイントをクリーンアップして終了します。 ブローカーは有効ですが、リモートのメッセージ交換エンドポイントにメッセージは送信されません。 古い Service Broker 識別子を参照するルートは、新しい識別子を使用して作成し直す必要があります。

ERROR_BROKER_CONVERSATIONS

データベースがアタッチまたは復元されていることを示すエラーと共に、すべてのメッセージ交換を終了します。 ブローカーはこの操作が完了するまで無効になり、その後、有効になります。 データベースは、既存の Service Broker 識別子を保持します。

デタッチされる代わりにコピーされたレプリケートされたデータベースをアタッチする場合は、次の点を考慮してください。

  • 元のデータベースと同じサーバー インスタンスおよびバージョンにデータベースをアタッチする場合は、必要な追加手順はありません。
  • 同じサーバー インスタンスのアップグレードされたバージョンにデータベースをアタッチする場合は、アタッチ操作が完了した後、sp_vupgrade_replication を実行してレプリケーションをアップグレードする必要があります。
  • バージョンに関係なく、別のサーバー インスタンスにデータベースをアタッチする場合は、アタッチ操作が完了した後、sp_removedbreplication を実行してレプリケーションを削除する必要があります。

アタッチは vardecimal ストレージ形式で動作しますが、SQL Server データベース エンジンは少なくとも SQL Server 2005 (9.x) SP2 にアップグレードする必要があります。 vardecimal ストレージ形式を使用してデータベースを以前のバージョンの SQL Server にアタッチすることはできません。 vardecimal ストレージ形式の詳細については、「データ圧縮」を参照してください。

データベースが SQL Server の新しいインスタンスに最初にアタッチまたは復元されるときに、データベース マスター キー (サービス マスター キーによって暗号化) のコピーがまだサーバーに格納されていません。 使用する必要があります、 OPEN MASTER KEY ステートメントをデータベース マスター_キー (DMK) の暗号化を解除します。 DMK の暗号化が解除されると、ALTER MASTER KEY REGENERATE ステートメントを使用して、サービス マスター キー (SMK) で暗号化された DMK のコピーをサーバーに提供することにより、将来、自動的に暗号化解除することも可能となります。 データベースを以前のバージョンからアップグレードした場合、新しい AES アルゴリズムを使用するように DMK を再作成する必要があります。 DMK を再作成する方法の詳細については、ALTER MASTER KEY に関するページを参照してください。 DMK キーを再作成して AES にアップグレードするのに必要な時間は、DMK によって保護されているオブジェクトの数によって異なります。 AES にアップグレードするために DMK キーを再生成する必要があるのは 1 回だけであり、キー ローテーション戦略の一環として将来の再生成には影響しません。 アタッチを使用してデータベースをアップグレードする方法については、「 デタッチとアタッチを使用したデータベースのアップグレード」を参照してください。

重要

不明なソースまたは信頼されていないソースからデータベースをアタッチしないことをお勧めします。 こうしたデータベースには、意図しない Transact-SQL コードを実行したり、スキーマまたは物理データベース構造を変更してエラーを発生させるような、悪意のあるコードが含まれている可能性があります。 不明または信頼できないソースのデータベースを使用する前には、運用サーバー以外のサーバーでそのデータベースに対し DBCC CHECKDB を実行し、さらに、そのデータベースのストアド プロシージャやその他のユーザー定義コードなどのコードを調べます。

TRUSTWORTHYオプションとDB_CHAININGオプションは、データベースをアタッチする場合には影響しません。

ATTACH_REBUILD_LOG向け

既存のオペレーティング システム ファイルのセットをアタッチすることによりデータベースを作成するように指定します。 このオプションは読み取り/書き込みデータベースに限定されます。 プライマリ・ファイルを指定する <filespec> エントリが必要です。 1 つ以上のトランザクション ログ ファイルが見つからない場合、ログ ファイルは再構築されます。 ATTACH_REBUILD_LOG を指定すると、1 MB のログ ファイルが自動的に新規作成されます。 このファイルは既定のログ ファイルの場所に保存されます。 この場所の詳細については、「 データ ファイルとログ ファイルの既定の場所を表示または変更する」を参照してください。

ログ ファイルが利用可能な場合、データベース エンジンはログ ファイルを再構築せず、それらのファイルを使用します。

FOR ATTACH_REBUILD_LOG には、次の条件が必要です。

  • データベースのクリーン シャットダウン。
  • すべてのデータ ファイル (MDF および NDF) が有効であること。

重要

この操作により、連続したログ バックアップが中断されます。 操作が完了した直後に、データベースの完全バックアップを作成することをお勧めします。 詳細については、バックアップに関するページを参照してください。

通常、 FOR ATTACH_REBUILD_LOG は、大きなログを含む読み取り/書き込みデータベースを別のサーバーにコピーするときに使用されます。このサーバーでは、コピーが主にまたは読み取り操作にのみ使用されるため、元のデータベースよりも必要なログ領域が少なくて済みます。

FOR ATTACH_REBUILD_LOG データベース スナップショットで指定できません。

データベースのアタッチとデタッチの詳細については、「 データベースのデタッチとアタッチ (SQL Server)」を参照してください。

<ファイルスペック>

ファイル プロパティを制御します。

ネーム logical_file_name

ファイルの論理名を指定します。 NAMEは、FILENAME句のいずれかを指定する場合を除き、FOR ATTACHが指定されている場合は必須です。 FILESTREAM ファイル グループには、PRIMARYという名前を付けることはできません。

  • logical_file_name

    ファイルを参照するときに SQL Server で使用される論理名。 Logical_file_name は、データベース内で一意であり、識別子の規則に従っている必要があります。 この名前は、文字定数、UNICODE 定数、標準の識別子、区切られた識別子のいずれでもかまいません。

ファイル名 { 'os_file_name' |'filestream_path' }

オペレーティング システムの (物理) ファイル名を指定します。

  • os_file_name

    ファイルの作成時にオペレーティング システムによって使用されるパスとファイル名。 ファイルは、SQL Server がインストールされているローカル サーバー、ストレージ エリア ネットワーク (SAN)、または、iSCSI ベースのネットワークのうちのいずれかのデバイスに存在する必要があります。 CREATE DATABASE ステートメントを実行する前に、指定したパスが存在している必要があります。 詳細については、この記事の後半の「データベース ファイルとファイル グループ」を参照してください。

    SIZEMAXSIZE、および FILEGROWTH パラメータは、ファイルに UNC パスが指定されている場合に設定できます。

    ファイルが未処理のパーティション上にある場合、os_file_name には、未処理になっている既存のパーティションのドライブ文字のみを指定する必要があります。 1 つの未処理のパーティションに作成できるのは 1 つのデータ ファイルだけです。

    生パーティションは、SQL Server 2014 (12.x) 以降のバージョンではサポートされていません。

    ファイルが読み取り専用のセカンダリ ファイルであるか、データベースが読み取り専用でない限り、データ ファイルを圧縮ファイル システムに配置しないでください。 ログ ファイルは、圧縮ファイル システム上に置くことはできません。

  • filestream_path

    FILESTREAM ファイル グループの場合、 FILENAME は FILESTREAM データが格納されるパスを参照します。 最後のフォルダーまでのパスが存在する必要がありますが、最後のフォルダーは存在できません。 たとえば、パス C:\MyFiles\MyFilestreamDataを指定する場合、ALTER DATABASEを実行する前にC:\MyFilesが存在する必要がありますが、MyFilestreamData フォルダーは存在しない必要があります。

    ファイル グループとファイル (<filespec>) は、同じステートメントで作成する必要があります。

    SIZEプロパティと FILEGROWTH プロパティは、FILESTREAM ファイル グループには適用されません。

サイズ サイズ

ファイルのサイズを指定します。

SIZE は、os_file_nameが UNC パスとして指定されている場合は指定できません。 SIZE は FILESTREAM ファイル グループには適用されません。

  • サイズの

    ファイルの初期サイズ。

    プライマリ ファイルの サイズ が指定されていない場合、データベース エンジンは、 model データベース内のプライマリ ファイルのサイズを使用します。 model データベースの既定のサイズは 8 MB (SQL Server 2016 (13.x) 以降) または 1 MB (それより前のバージョン) です。 セカンダリ データ ファイルまたはログ ファイルが指定されているが、ファイルの サイズ が指定されていない場合、データベース エンジンはファイルを 8 MB (SQL Server 2016 (13.x) 以降) または 1 MB (以前のバージョンの場合) にします。 プライマリ ファイルに対して指定するサイズは、model データベースのプライマリ ファイルのサイズ以上である必要があります。

    サフィックスとして、キロバイト (KB)、メガバイト (MB)、ギガバイト (GB)、またはテラバイト (TB) を使用できます。 既定値は MB です。 整数を指定し、 10 進数を含めないでください。 size は整数値です。 2,147,483,647 より大きい値の場合は、大きい単位を使用します。

MAXSIZE max_size

ファイルのサイズの上限を指定します。 MAXSIZE は、os_file_nameが UNC パスとして指定されている場合は指定できません。

  • max_size

    ファイルの最大サイズ。 サフィックスとして、KB、MB、GB、および TB を使用できます。 既定値は MB です。 整数を指定し、 10 進数を含めないでください。 max_sizeを指定しないと、ディスクがいっぱいになるまでファイルが拡張されます。 max_size は整数値です。 2,147,483,647 を超える値に対しては、より大きな単位を使用してください。

  • 無制限の

    ディスクがいっぱいになるまでファイルを拡張するように指定します。 SQL Server では、無制限に拡張するファイル固有のログの最大サイズは 2 TB で、データ ファイルの最大サイズは 16 TB です。

    FILESTREAM コンテナーに対してこのオプションが指定されている場合、最大サイズはありません。 ディスクがいっぱいになるまでファイル サイズが拡張します。

FILEGROWTH growth_increment

ファイルを自動拡張するときの増加量を指定します。 ファイルの FILEGROWTH 設定は、 MAXSIZE 設定を超えることはできません。 FILEGROWTH は、os_file_nameが UNC パスとして指定されている場合は指定できません。 FILEGROWTH は FILESTREAM ファイル グループには適用されません。

  • growth_increment

    新しい領域が必要になるたびにファイルに追加される領域の量。

    値は、 KBMBGBTB、またはパーセント (%) で指定できます。 KBMB、または%サフィックスなしで数値を指定した場合、既定値はMB%を指定した場合、増加増分サイズは、増分が発生した時点でのファイルのサイズに対する指定された割合です。 指定されたサイズは、最も近い 64 KB 単位の値に丸められ、最小値は 64 KB になります。

    0 は、自動拡張がオフで、領域を追加できないことを示します。

    FILEGROWTHが指定されていない場合、既定値は次のようになります。

    バージョン 既定値
    SQL Server 2016 (13.x) 以降 データ 64 MB。 ログ ファイル 64 MB。
    SQL Server 2005 (9.x) 以降 データ 1 MB。 ログ ファイル 10%。
    SQL Server 2005 (9.x) 以前 データ 10%。 ログ ファイル 10%。

<ファイル グループ>

ファイル グループ プロパティを制御します。 データベース スナップショットでファイル グループを指定することはできません。

ファイル グループ filegroup_name

ファイル グループの論理名。

  • filegroup_name

    filegroup_name はデータベース内で一意である必要があり、システム指定の名前 PRIMARY および PRIMARY_LOGにすることはできません。 この名前は、文字定数、UNICODE 定数、標準の識別子、区切られた識別子のいずれでもかまいません。 名前は、識別子のルールに従っている必要があります。

  • ファイルストリームを含む

    ファイル グループで FILESTREAM バイナリ ラージ オブジェクト (BLOB) をファイル システムに格納することを指定します。

  • デフォルト

    指定されたファイル グループが、データベースの既定のファイル グループであることを指定します。

  • MEMORY_OPTIMIZED_DATAが含まれています

    適用対象: SQL Server 2014 (12.x) 以降のバージョン

    ファイル グループで memory_optimized データをファイル システムに格納することを指定します。 詳細については、「 In-Memory OLTP の概要と使用シナリオ」を参照してください。 データベースごとに許可される MEMORY_OPTIMIZED_DATA ファイル グループは 1 つだけです。 メモリ最適化データを格納するファイルグループを作成するコード サンプルについては、「メモリ最適化テーブルおよびネイティブ コンパイル ストアド プロシージャの作成」を参照してください。

database_snapshot_name

新しいデータベース スナップショットの名前。 データベース スナップショット名は、SQL Server のインスタンス内で一意であり、識別子のルールに従っている必要があります。 database_snapshot_name は 128 文字以下です。

ON ( NAME = logical_file_name, FILENAME = 'os_file_name') [ ,... n ]

データベース スナップショットを作成するには、ソース データベースのファイルのリストを指定します。 スナップショットが機能するためには、すべてのデータ ファイルを個別に指定する必要があります。 ただし、ログ ファイルはデータベース スナップショットには使用できません。 FILESTREAM ファイル グループは、データベース スナップショットではサポートされていません。 FILESTREAM データ ファイルが CREATE DATABASE ON 句に含まれている場合、ステートメントは失敗し、エラーが発生します。

NAMEFILENAMEとその値の説明については、同等の<filespec>値の説明を参照してください。

データベース スナップショットを作成する場合、他の <filespec> オプションとキーワード PRIMARY は許可されません。

source_database_nameのスナップショットとして

作成されるデータベースが、source_database_name によって指定されたソース データベースのデータベース スナップショットであることを指定します。 スナップショットとソース データベースは同じインスタンス上に存在する必要があります。

SQL Server 2017 (14.x) 以前のバージョンでは、データベース スナップショットのソース データベースに MEMORY_OPTIMIZED_DATA ファイル グループを含めることができませんでした。 インメモリ データベース スナップショットのサポートが SQL Server 2019 (15.x) で追加されました。

詳細については、データベース スナップショットに関するページを参照してください。

解説

master データベースは、ユーザー データベースが作成、変更、または削除されるたびにバックアップする必要があります。

CREATE DATABASE ステートメントは自動コミット モード (既定のトランザクション管理モード) で実行する必要があり、明示的または暗黙的なトランザクションでは使用できません。

1 つの CREATE DATABASE ステートメントを使用して、データベースおよびデータベースを格納するファイルを作成することができます。 SQL Server では、次の手順を使用して CREATE DATABASE ステートメントを実装します。

  1. SQL Server で、model データベースのコピーを使用して、データベースとそのメタデータを初期化します。
  2. Service Broker GUID がデータベースに割り当てられます。
  3. 次に、データベース エンジンは、データベース内の領域の使用状況を記録する内部データが格納されるページを除いて、データベースの残りの部分に空のページを挿入します。

SQL Server のインスタンスには、最大 32,767 個のデータベースを指定できます。

各データベースには、データベース内で特殊な操作を実行できる所有者が存在します。 所有者はデータベースを作成するユーザーです。 ALTER AUTHORIZATION を使用して、データベース所有者を変更できます。

一部のデータベース機能は、データベースの機能をすべて利用するためにファイル システムに存在する機能または能力に依存しています。 ファイル システムの機能セットに依存する機能の例をいくつか挙げます。

  • DBCC CHECKDB
  • ファイルストリーム
  • VSS とファイルのスナップショットを使用したオンライン バックアップ
  • データベース スナップショットの作成
  • メモリ最適化データ ファイル グループ

データベース ファイルとファイル グループ

すべてのデータベースには、プライマリ ファイルトランザクション ログ ファイルという少なくとも 2 つのファイル、および少なくとも 1 つのファイル グループがあります。 各データベースに、最大 32,767 のファイルと 32,767 のファイル グループを指定できます。

データベースを作成する際に、データ ファイルのサイズは、データベースに記述されるデータの最大量を基に可能な限り大きく設定しておきます。

SQL Server データベース ファイルのストレージには、ストレージ エリア ネットワーク (SAN)、iSCSI ベースのネットワーク、または、ローカルにアタッチされたディスクを使用することをお勧めします。この構成により、SQL Server のパフォーマンスと信頼性を最適化することができるためです。

データベース スナップショット

CREATE DATABASE ステートメントを使用して、"ソース データベース" の読み取り専用の静的ビューである "データベース スナップショット" を作成できます。 データベース スナップショットは、スナップショットが作成された時点で存在していたソース データベースと、トランザクション的に一貫性があります。 ソース データベースは複数のスナップショットを持つことができます。

データベース スナップショットを作成すると、 CREATE DATABASE ステートメントはログ ファイル、オフライン ファイル、復元ファイル、および機能していないファイルを参照できません。

データベース スナップショットの作成に失敗した場合、スナップショットは問題のある状態となり、削除する必要があります。 詳細については、DROP DATABASE に関するページを参照してください。

各スナップショットは、 DROP DATABASEを使用して削除されるまで保持されます。

詳細については、「 データベース スナップショット (SQL Server)」 および 「データベース スナップショットの作成」を参照してください。

データベース オプション

データベースを作成するたびに、いくつかのデータベース オプションが自動的に設定されます。 これらのオプションの一覧については、 ALTER DATABASE SET オプションを参照してください。

model データベースと新しいデータベースの作成

model データベース内にあるすべてのユーザー定義のオブジェクトは、新しく作成されたすべてのデータベースにコピーされます。 テーブル、ビュー、ストアド プロシージャ、データ型など、あらゆるオブジェクトを model データベースに追加し、新しく作成されるすべてのデータベースに含めることができます。

CREATE DATABASE <database_name> ステートメントがサイズ パラメーターを追加せずに指定されている場合、プライマリ データ ファイルは、model データベースのプライマリ ファイルと同じサイズになります。

FOR ATTACH が指定されていない限り、それぞれの新しいデータベースは、model データベースからデータベース オプションの設定を継承します。 たとえば、auto shrink データベース オプションは、 データベースにおいても、作成するどの新規データベースにおいても、model に設定されます。 model データベースのオプションを変更すると、これらの新しいオプション設定が、作成する新規のデータベースで使用されます。 model データベースの操作を変更しても、既存のデータベースには影響しません。 CREATE DATABASE ステートメントで FOR ATTACH が指定されている場合、新しいデータベースは元のデータベースのデータベース オプション設定を継承します。

データベース情報の表示

カタログ ビュー、システム関数、およびシステム ストアド プロシージャを使用して、データベース、ファイルおよびファイル グループについての情報を返すことができます。 詳細については、「 システム ビュー」を参照してください。

アクセス許可

CREATE DATABASECREATE ANY DATABASE、または ALTER ANY DATABASE アクセス許可が必要です。

SQL Server のインスタンスでのディスク使用の制御を維持するために、データベースを作成するアクセス許可は通常、いくつかのログインに制限されます。

次の例では、データベース ユーザー Fayにデータベースを作成する権限を提供します。

USE master;
GO

GRANT CREATE DATABASE TO [Fay];
GO

データ ファイルとログ ファイルに対するアクセス許可

SQL Server では、各データベースのデータ ファイルとログ ファイルに一定の権限が設定されます。 次の操作がデータベースに適用されるたびに、次の権限が設定されます。

  • アタッチ
  • バックアップ
  • 作成済み
  • デタッチ
  • 変更して新しいファイルを追加
  • 復元

この権限は、開く権限のあるディレクトリにファイルが存在する場合に、そのファイルが誤って書き換えられるのを防ぎます。

Microsoft SQL Server 2005 Express Edition では、データとログ ファイルのアクセス許可は設定されません。

A。 ファイルを指定せずにデータベースを作成する

次の例では、mytest データベースを作成し、対応するプライマリ ファイルおよびトランザクション ログ ファイルを作成します。 この文には <filespec> 項目がないため、プライマリ・データベース・ファイルは model データベース・プライマリ・ファイルのサイズになります。 トランザクション ログは、512 KB、またはプライマリ データ ファイルのサイズの 25% のいずれか大きい方の値に設定されます。 MAXSIZEが指定されていないため、使用可能なすべてのディスク領域にファイルが拡張される可能性があります。 この例では、mytest という名前のデータベースが既に存在する場合はそれを削除してから、mytest データベースを作成する方法も示します。

USE master;
GO

IF DB_ID(N'mytest') IS NOT NULL
    DROP DATABASE mytest;
GO

CREATE DATABASE mytest;
GO

-- Verify the database files and sizes
SELECT name,
       size,
       size * 1.0 / 128 AS [Size in MBs]
FROM sys.master_files
WHERE name = N'mytest';
GO

B. データ ファイルとトランザクション ログ ファイルを指定してデータベースを作成する

次の例では、Sales データベースを作成します。 キーワード PRIMARY は使用されないため、最初のファイル (Sales_dat) がプライマリ ファイルになります。 Sales_dat ファイルの SIZE パラメーターには MB も KB も指定されていないため、MBを使用し、メガバイト単位で割り当てられます。 Sales_log ファイルは、MB パラメーターに SIZE サフィックスが明示的に指定されているため、メガバイト単位で割り当てられます。

USE master;
GO

CREATE DATABASE Sales
ON (
    NAME = Sales_dat,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\saledat.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5
)
LOG ON (
    NAME = Sales_log,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\salelog.ldf',
    SIZE = 5 MB,
    MAXSIZE = 25 MB,
    FILEGROWTH = 5 MB
);
GO

C. 複数のデータ ファイルとトランザクション ログ ファイルを指定してデータベースを作成する

次の例では、3 つの Archive のデータ ファイルと 2 つの 100-MB のトランザクション ログ ファイルがある 100-MB データベースを作成します。 プライマリ ファイルはリストの最初のファイルであり、PRIMARY キーワードによって明示的に指定されます。 トランザクション ログ ファイルは、LOG ON キーワードに続けて指定されます。 FILENAME オプションでファイルに使用される拡張子のうち、.mdf はプライマリ データ ファイルに、.ndf はセカンダリ データ ファイルに、.ldf はトランザクション ログ ファイルに、それぞれ使用されます。 この例では、作成するデータベースは、D: データベースと同じ場所ではなく master ドライブに格納します。

USE master;
GO

CREATE DATABASE Archive
ON PRIMARY
(
    NAME = Arch1,
    FILENAME = 'D:\SalesData\archdat1.mdf',
    SIZE = 100 MB,
    MAXSIZE = 200,
    FILEGROWTH = 20
), (
    NAME = Arch2,
    FILENAME = 'D:\SalesData\archdat2.ndf',
    SIZE = 100 MB,
    MAXSIZE = 200,
    FILEGROWTH = 20
), (
    NAME = Arch3,
    FILENAME = 'D:\SalesData\archdat3.ndf',
    SIZE = 100 MB, MAXSIZE = 200,
    FILEGROWTH = 20
)
LOG ON (
    NAME = Archlog1,
    FILENAME = 'D:\SalesData\archlog1.ldf',
    SIZE = 100 MB,
    MAXSIZE = 200,
    FILEGROWTH = 20
), (
    NAME = Archlog2,
    FILENAME = 'D:\SalesData\archlog2.ldf',
    SIZE = 100 MB,
    MAXSIZE = 200,
    FILEGROWTH = 20
);
GO

D. ファイル グループのあるデータベースを作成する

次の例では、以下のファイル グループがある Sales データベースを作成します。

  • Spri1_dat ファイルおよび Spri2_dat ファイルのあるプライマリ ファイル グループ。 これらのファイルの FILEGROWTH 増分は、 15%として指定されます。
  • SalesGroup1 ファイルおよび SGrp1Fi1 ファイルのある、SGrp1Fi2 というファイル グループ。
  • SalesGroup2 ファイルおよび SGrp2Fi1 ファイルのある、SGrp2Fi2 というファイル グループ。

この例では、データ ファイルとログ ファイルは、パフォーマンスを向上させるために別のディスクに格納します。

USE master;
GO

CREATE DATABASE Sales
ON PRIMARY(
    NAME = SPri1_dat,
    FILENAME = 'D:\SalesData\SPri1dat.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 15 %
), (
    NAME = SPri2_dat,
    FILENAME = 'D:\SalesData\SPri2dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 15 %
),
FILEGROUP SalesGroup1(
    NAME = SGrp1Fi1_dat,
    FILENAME = 'D:\SalesData\SG1Fi1dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5
), (
    NAME = SGrp1Fi2_dat,
    FILENAME = 'D:\SalesData\SG1Fi2dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5
),
FILEGROUP SalesGroup2(
    NAME = SGrp2Fi1_dat,
    FILENAME = 'D:\SalesData\SG2Fi1dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5
), (
    NAME = SGrp2Fi2_dat,
    FILENAME = 'D:\SalesData\SG2Fi2dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5
)
LOG ON (
    NAME = Sales_log,
    FILENAME = 'E:\SalesLog\salelog.ldf',
    SIZE = 5 MB,
    MAXSIZE = 25 MB,
    FILEGROWTH = 5 MB
);
GO

E. データベースのアタッチ

次の例では、例 D で作成された Archive データベースをデタッチしてから、FOR ATTACH 句を使用してこのデータベースをアタッチします。 Archive は、複数のデータおよびログ ファイルを保有するように定義されています。 ただし、ファイルの作成後にファイルの場所が変更されていないため、 FOR ATTACH 句で指定する必要があるのはプライマリ ファイルだけです。 SQL Server 2005 (9.x) 以降では、アタッチされるデータベースの一部であるすべてのフルテキスト ファイルがデータベースにアタッチされます。

USE master;
GO

EXECUTE sp_detach_db Archive;
GO

CREATE DATABASE Archive
    ON
    (FILENAME = 'D:\SalesData\archdat1.mdf') FOR ATTACH;
GO

F. データベース スナップショットの作成

次の例では、sales_snapshot0600 データベース スナップショットを作成します。 データベース スナップショットは読み取り専用であるため、ログ ファイルを指定することはできません。 構文に準拠して、ソース データベース内のすべてのファイルが指定され、ファイル グループは指定されません。

この例で使用するソース データベースは、例 D で作成された Sales データベースです。

USE master;
GO

CREATE DATABASE sales_snapshot0600
ON
    (NAME = SPri1_dat, FILENAME = 'D:\SalesData\SPri1dat_0600.ss'),
    (NAME = SPri2_dat, FILENAME = 'D:\SalesData\SPri2dt_0600.ss'),
    (NAME = SGrp1Fi1_dat, FILENAME = 'D:\SalesData\SG1Fi1dt_0600.ss'),
    (NAME = SGrp1Fi2_dat, FILENAME = 'D:\SalesData\SG1Fi2dt_0600.ss'),
    (NAME = SGrp2Fi1_dat, FILENAME = 'D:\SalesData\SG2Fi1dt_0600.ss'),
    (NAME = SGrp2Fi2_dat, FILENAME = 'D:\SalesData\SG2Fi2dt_0600.ss')
AS SNAPSHOT OF Sales;
GO

G. データベースを作成し、照合順序名とオプションを指定する

次の例では、MyOptionsTest データベースを作成します。 照合順序名が指定され、TRUSTYWORTHY および DB_CHAINING オプションが ON に設定されます。

USE master;
GO

IF DB_ID(N'MyOptionsTest') IS NOT NULL
    DROP DATABASE MyOptionsTest;
GO

CREATE DATABASE MyOptionsTest COLLATE French_CI_AI
    WITH TRUSTWORTHY ON, DB_CHAINING ON;
GO

--Verifying collation and option settings.
SELECT name,
       collation_name,
       is_trustworthy_on,
       is_db_chaining_on
FROM sys.databases
WHERE name = N'MyOptionsTest';
GO

H. 移動されたフルテキスト カタログをアタッチする

次の例では、フルテキスト カタログ AdvWksFtCatAdventureWorks2022 のデータおよびログ ファイルと共にアタッチします。 この例では、フルテキスト カタログは、既定の場所から新しい場所、c:\myFTCatalogs に移されます。 データおよびログ ファイルは、それぞれの既定の場所に残ります。

USE master;
GO

--Detach the AdventureWorks2022 database
EXECUTE sp_detach_db AdventureWorks2022;
GO

-- Physically move the full text catalog to the new location.
--Attach the AdventureWorks2022 database and specify the new location of the full-text catalog.
CREATE DATABASE AdventureWorks2022 ON
    (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_data.mdf'),
    (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2022_log.ldf'),
    (FILENAME = 'c:\myFTCatalogs\AdvWksFtCat')
FOR ATTACH;
GO

一 1 つの ROW ファイル グループと 2 つの FILESTREAM ファイル グループを指定してデータベースを作成する

次の例では、FileStreamDB データベースを作成します。 データベースは、1 つの ROW ファイル グループと 2 つの FILESTREAM ファイル グループを使用して作成されます。 各ファイル グループには、1 つのファイルが含まれます。

  • FileStreamDB_data には行データが含まれます。 これには、既定のパスを指定した 1 つのファイル FileStreamDB_data.mdf が含まれます。

  • FileStreamPhotos には FILESTREAM データが含まれます。 これには、FSPhotos (C:\MyFSfolder\Photos にある) と FSPhotos2 (D:\MyFSfolder\Photos にある) の 2 つの FILESTREAM データ コンテナーが含まれます。 既定の FILESTREAM ファイル グループとしてマークされます。

  • FileStreamResumes には FILESTREAM データが含まれます。 これには、1 つの FILESTREAM データ コンテナー FSResumes (C:\MyFSfolder\Resumes にある) が含まれます。

USE master;
GO

-- Get the SQL Server data path.
DECLARE @data_path AS NVARCHAR (256);

SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
                  FROM master.sys.master_files
                  WHERE database_id = 1
                        AND file_id = 1);

-- Execute the CREATE DATABASE statement.
EXECUTE ('CREATE DATABASE FileStreamDB
ON PRIMARY (
    NAME = FileStreamDB_data,
    FILENAME = ''' + @data_path + ' FileStreamDB_data.mdf '',
    SIZE = 10 MB,
    MAXSIZE = 50 MB,
    FILEGROWTH = 15 %
),
FILEGROUP FileStreamPhotos
CONTAINS FILESTREAM DEFAULT (NAME = FSPhotos, FILENAME = ''C:\MyFSfolder\Photos'',
        -- SIZE and FILEGROWTH should not be specified here.
        -- If they are specified, an error is raised.
        MAXSIZE = 5000 MB),
    (NAME = FSPhotos2, FILENAME = ''D:\MyFSfolder\Photos'', MAXSIZE = 10000 MB),
FILEGROUP FileStreamResumes
    CONTAINS FILESTREAM (NAME = FileStreamResumes, FILENAME = ''C:\MyFSfolder\Resumes'')
LOG ON (
    NAME = FileStream_log,
    FILENAME = ''' + @data_path + ' FileStreamDB_log.ldf '',
    SIZE = 5 MB,
    MAXSIZE = 25 MB,
    FILEGROWTH = 5 MB
);');
GO

J. 複数のファイルを含む FILESTREAM ファイル グループのあるデータベースを作成する

次の例では、BlobStore1 データベースを作成します。 データベースは、1 つの ROW ファイル グループと、FS という 1 つの FILESTREAM ファイル グループを使用して作成されます。 FILESTREAM ファイル グループには、FS1 および FS2 の 2 つのファイルが含まれています。 その後 FS3 という 3 つ目のファイルが FILESTREAM ファイルグループに追加されると、データベースが変更されます。

USE master;
GO

CREATE DATABASE [BlobStore1] CONTAINMENT = NONE
ON PRIMARY(
    NAME = N'BlobStore1',
    FILENAME = N'C:\BlobStore\BlobStore1.mdf',
    SIZE = 100 MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 1 MB
),
FILEGROUP [FS] CONTAINS FILESTREAM DEFAULT
    (NAME = N'FS1', FILENAME = N'C:\BlobStore\FS1', MAXSIZE = UNLIMITED),
    (NAME = N'FS2', FILENAME = N'C:\BlobStore\FS2', MAXSIZE = 100 MB)
LOG ON (
    NAME = N'BlobStore1_log',
    FILENAME = N'C:\BlobStore\BlobStore1_log.ldf',
    SIZE = 100 MB,
    MAXSIZE = 1 GB,
    FILEGROWTH = 1 MB
);
GO

ALTER DATABASE [BlobStore1]
ADD FILE (
    NAME = N'FS3',
    FILENAME = N'C:\BlobStore\FS3',
    MAXSIZE = 100 MB
) TO FILEGROUP [FS];
GO

* SQLデータベース *

SQL Database

概要

Azure SQL Database では、Azure SQL サーバーでこのステートメントを使って、単一のデータベースまたはエラスティック プール内のデータベースを作成できます。 このステートメントで、データベース名、照合順序、最大サイズ、エディション、サービス目標、および該当する場合は新しいデータベースのエラスティック プールを指定します。 また、エラスティック プールにデータベースを作成することにも使用できます。 さらに、別の SQL Database サーバー上にデータベースのコピーを作成することもできます。

構文

データベースを作成する

構文表記規則の詳細については、「Transact-SQL 構文表記規則」を参照してください。

CREATE DATABASE database_name [ COLLATE collation_name ]
{
  (<edition_options> [ , ...n ] )
}
[ WITH <with_options> [ , ..n ] ]
[ ; ]

<with_options> ::=
{
    CATALOG_COLLATION = { DATABASE_DEFAULT | SQL_Latin1_General_CP1_CI_AS }
  | BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' | 'GEOZONE' }
  | LEDGER = { ON | OFF }
}

<edition_options> ::=
{

  MAXSIZE = { 100 MB | 500 MB | 1 ... 1024 ... 4096 GB }
  | ( EDITION = { 'Basic' | 'Standard' | 'Premium' | 'GeneralPurpose' | 'BusinessCritical' | 'Hyperscale' }
  | SERVICE_OBJECTIVE =
    { 'Basic' | 'S0' | 'S1' | 'S2' | 'S3' | 'S4' | 'S6' | 'S7' | 'S9' | 'S12'
      | 'P1' | 'P2' | 'P4' | 'P6' | 'P11' | 'P15'
      | 'BC_DC_n'
      | 'BC_Gen5_n'
      | 'BC_M_n'
      | 'GP_DC_n'
      | 'GP_Fsv2_n'
      | 'GP_Gen5_n'
      | 'GP_S_Gen5_n'
      | 'HS_DC_n'
      | 'HS_Gen5_n'
      | 'HS_S_Gen5_n'
      | 'HS_MOPRMS_n'
      | 'HS_PRMS_n'
      | { ELASTIC_POOL(name = <elastic_pool_name>) } } )
}

データベースをコピーする

CREATE DATABASE database_name
    AS COPY OF [ source_server_name. ] source_database_name
    [ ( SERVICE_OBJECTIVE =
      { 'Basic' | 'S0' | 'S1' | 'S2' | 'S3' | 'S4' | 'S6' | 'S7' | 'S9' | 'S12'
      | 'P1' | 'P2' | 'P4' | 'P6' | 'P11' | 'P15'
      | 'GP_Gen5_n'
      | 'GP_Fsv2_n'
      | 'GP_S_Gen5_n'
      | 'BC_Gen5_n'
      | 'BC_M_n'
      | 'HS_Gen5_n'
      | 'HS_S_Gen5_n'
      | 'HS_PRMS_n'
      | 'HS_MOPRMS_n'
      | { ELASTIC_POOL(name = <elastic_pool_name>) } } )
   ]
   [ WITH ( BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' | 'GEOZONE' } ) ]
[ ; ]

引数

database_name

新しいデータベースの名前。 この名前は、SQL Server で一意であり、識別子に関する SQL Server の規則に準拠している必要があります。 詳細については、「 データベース識別子」を参照してください。

collation_name

データベースのデータに対する既定の照合順序を指定します。 オブジェクト識別子などのシステム メタデータに CATALOG_COLLATION を指定します。

照合順序名には、Windows 照合順序名または SQL 照合順序名を指定できます。 指定しない場合、データベースには既定の照合順序が割り当てられ、 SQL_Latin1_General_CP1_CI_AS

Windows 照合順序と SQL 照合順序名の詳細については、 COLLATE を参照してください。

CATALOG_COLLATION

メタデータ カタログの既定の照合順序を指定します。 CATALOG_COLLATION引数はデータベースの作成時にのみ使用でき、作成後に変更することはできません。

既定では、システム オブジェクト名のメタデータ カタログは照合順序 SQL_Latin1_General_CP1_CI_AS 照合されます。 CATALOG_COLLATIONが指定されていない場合、これは Azure SQL Database の既定の設定です。

DATABASE_DEFAULT は、システム ビューとシステム テーブルに使用されるメタデータ カタログを、データベースの照合順序と一致するように照合することを指定します。 システム メタデータ内のオブジェクト識別子を、データと同じ照合順序にしたい場合は、データベース WITH CATALOG_COLLATION = DATABASE_DEFAULT を作成する必要があります。

  • データ識別子とオブジェクト識別子に異なる照合順序が必要な場合があります。 次の例では、行データに対して大文字と小文字を区別する照合順序を持つデータベースを作成しますが、オブジェクト識別子には既定の SQL_Latin1_General_CP1_CI_AS 大文字と小文字を区別しない照合順序を使用します。

    CREATE DATABASE [different-collations] COLLATE SQL_Latin1_General_CP1_CS_AS;
    
  • データとシステム メタデータの両方で同じ照合順序を使用したい場合は、WITH CATALOG_COLLATION = DATABASE_DEFAULT を指定します。 次の例では、オブジェクト識別子に使用される、大文字と小文字を区別する照合順序を使用してデータベースを作成します。

    CREATE DATABASE [same-collations] COLLATE SQL_Latin1_General_CP1_CS_AS
        WITH CATALOG_COLLATION = DATABASE_DEFAULT;
    

BACKUP_STORAGE_REDUNDANCY = {'LOCAL' |'ZONE' |'GEO' |'GEOZONE' }

データベースのポイントインタイム リストア バックアップおよび長期保有バックアップがどのように複製されるかを指定します。 Geo リストアまたは地域的な障害からの復旧機能は、データベースが GEO バックアップ ストレージの冗長性を使用して作成されている場合にのみ使用できます。 明示的に指定しない限り、T-SQL で作成されたデータベースは geo 冗長バックアップ ストレージを使用します。

geo ゾーン冗長ストレージには GEOZONE を使用します。 geo ゾーン冗長ストレージ (GZRS) は、あらゆるワークロードに対して、ゾーンの停止だけでなく、リージョンの停止に対して最高レベルの保護を提供します。

T-SQL を使用してデータベースを作成するときにデータ所在地を強制するには、 LOCAL または ZONEBACKUP_STORAGE_REDUNDANCY パラメーターへの入力として使用します。

AS COPY OFを使用して別のデータベースのコピーとしてデータベースを作成する場合は、オプションの指定がサポートされているため、括弧で囲む必要があります。 たとえば、WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL'); のようにします。

LEDGER = { ON |OFF }

ON に設定すると、台帳データベースが作成されます。ここでは、すべてのユーザー データの整合性が保護されます。 台帳データベースに作成できるのは、台帳テーブルだけです。 既定値は、OFF です。 LEDGER オプションの値は、データベースの作成後は変更できません。 詳細については、台帳データベースの構成に関するページを参照してください。

MAXSIZE(最大サイズ)

データベースの最大サイズを指定します。 MAXSIZE は、指定された EDITION (サービス レベル) に対して有効である必要があります。

サービス レベルでサポートされている MAXSIZE 値と既定値 (D) を次に示します。

MAXSIZE引数は、Hyperscale サービス レベルの単一データベースには適用されません。 単一 Hyperscale レベルのデータベースは、必要に応じて最大 128 TB まで拡張されます。 SQL Database サービスによってストレージが自動的に追加されます。最大サイズを設定する必要はありません。

SQL Database サーバー上の単一のデータベースおよびプールされたデータベースの DTU モデル

MAXSIZE Basic S0-S2 S3-S12 P1-P6 P11-P15 1
100 MB イエス イエス イエス イエス イエス
500 MB イエス イエス イエス イエス イエス
1 GB イエス イエス イエス イエス イエス
2 GB はい (D) イエス イエス イエス イエス
5 GB 該当なし イエス イエス イエス イエス
10 GB 該当なし イエス イエス イエス イエス
20ギガバイト 該当なし イエス イエス イエス イエス
30ギガバイト 該当なし イエス イエス イエス イエス
40ギガバイト 該当なし イエス イエス イエス イエス
50 GB 該当なし イエス イエス イエス イエス
100 GB 該当なし イエス イエス イエス イエス
150 GB 該当なし イエス イエス イエス イエス
200ギガバイト 該当なし イエス イエス イエス イエス
250 GB 該当なし はい (D) はい (D) イエス イエス
300ギガバイト 該当なし 該当なし イエス イエス イエス
400ギガバイト 該当なし 該当なし イエス イエス イエス
500 GB 該当なし 該当なし イエス はい (D) イエス
750 GB 該当なし 該当なし イエス イエス イエス
1,024ギガバイト 該当なし 該当なし イエス イエス はい (D)
1,024 GB から 4,096 GB まで 256 GB ずつ増加 該当なし 該当なし 該当なし 該当なし イエス

1 P11 と P15 では、最大 4 TB MAXSIZE 、既定のサイズは 1,024 GB です。 P11 と P15 では、追加料金なしで付属のストレージを 4 TB まで使用できます。 Premium レベルでは、現在、1 TB を超える MAXSIZE は、米国東部 2、米国西部、US Gov バージニア、西ヨーロッパ、ドイツ中部、東南アジア、東日本、オーストラリア東部、カナダ中部、カナダ東部の各リージョンで利用できます。 DTU モデルのリソース制限の詳細については、「DTU 購入モデルを使用した単一データベースのリソース制限 - Azure SQL Database」を参照してください。

DTU モデルの MAXSIZE 値 (指定されている場合) は、指定されたサービス レベルの前の表に示した有効な値である必要があります。

仮想コア購入モデルの最大データ サイズや tempdb のサイズなどの制限については、単一データベースのリソース制限またはエラスティック プールのリソース制限に関する記事をご覧ください。

仮想コア モデルを使用するときに MAXSIZE 値が設定されていない場合、既定値は 32 GB です。 仮想コア モデルのリソース制限の詳細については、「 仮想コアリソースの制限を参照してください。

データベースのサービス層を指定します。

単一およびプールされたデータベース。 使用できる値は次のとおりです。'Basic'、'Standard'、'Premium'、'GeneralPurpose'、'BusinessCritical'、'Hyperscale'。

MAXSIZE引数とEDITION引数には、次の規則が適用されます。

  • EDITIONが指定されていても、MAXSIZEが指定されていない場合は、エディションの既定値が使用されます。 たとえば、 EDITION が Standard に設定されていて、 MAXSIZE が指定されていない場合、MAX'SIZE は自動的に 250 MB に設定されます。

  • MAXSIZEEDITIONも指定されていない場合、EDITIONは 'GeneralPurpose' に設定され、MAXSIZEは 32 GB に設定されます。

SERVICE_OBJECTIVE

コンピューティング サイズとサービス目標を指定します。

  • DTU 購入モデルの場合: S0S1S2S3S4S6S7S9S12P1P2P4P6P11P15

  • 最新の仮想コア購入モデルの場合は、レベルを選び、あらかじめ設定されている値の一覧から仮想コアの数を指定します。ここで、仮想コアの数は n です。 単一データベースのリソース制限またはエラスティック プールのリソース制限に関する記事をご覧ください。

    • 例えば:
      • General Purpose、プロビジョニング済みコンピューティング、Standard シリーズ (Gen5)、8 仮想コア用の GP_Gen5_8
      • 汎用、サーバーレス コンピューティング、Standard シリーズ (Gen5)、8 仮想コア用の GP_S_Gen5_8
      • Hyperscale、プロビジョニング済みコンピューティング、Standard シリーズ (Gen5)、8 仮想コアの HS_Gen5_8
      • Hyperscale、サーバーレス コンピューティング、Standard シリーズ (Gen5)、8 仮想コアの HS_S_Gen5_8

サービス目標に関する説明およびサイズ、エディション、サービス目標の組み合わせの詳細については、「Azure SQL データベースのサービス階層」をご覧ください。 指定した SERVICE_OBJECTIVEEDITIONでサポートされていない場合は、エラーが発生します。 SERVICE_OBJECTIVEの値を 1 つのレベルから別のレベルに変更するには (S1 から P1 など)、EDITION値も変更する必要があります。 PRS サービスの目標のサポートはなくなりました。

ELASTIC_POOL (名前 = <elastic_pool_name>)

適用対象: 単一のデータベースおよびプールされたデータベースのみ。 Hyperscale サービス レベルのデータベースには適用されません。

エラスティック データベース プールに新しいデータベースを作成するには、データベースの SERVICE_OBJECTIVEELASTIC_POOL に設定し、プールの名前を指定します。 詳細については、Elastic Pool を利用した Azure SQL データベース内の、複数のデータベースの管理およびスケーリングに関するページをご覧ください。

AS COPY OF [ source_server_name. ] source_database_name

適用対象: 単一のデータベースおよびプールされたデータベースのみ。

AS COPY OFを使用して、データベースを同じ SQL Database サーバーまたは別の SQL Database サーバーにコピーします。

AS COPY OFを使用して別のデータベースのコピーとしてデータベースを作成する場合は、オプションの指定がサポートされており、かっこで囲む必要があります。 たとえば、WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL'); のようにします。

  • source_server_name

    ソース データベースが配置されている SQL Database サーバーの名前。 このパラメーターは、ソース データベースと対象データベースが同じ SQL Database サーバー上にある場合は省略可能です。

    AS COPY OF引数は、完全修飾一意のドメイン名をサポートしていません。 つまり、サーバーの完全修飾ドメイン名が serverName.database.windows.net である場合は、serverName のみをデータベース コピー中に使用します。

  • source_database_name

    コピーするデータベースの名前。

解説

Azure SQL Database 内のデータベースについては、データベースの作成時に設定される既定の設定がいくつかあります。 これらの既定の設定の詳細については、「DATABASEPROPERTYEX」の値の一覧を参照してください。

MAXSIZE を使用して、データベースのサイズを制限できます。 データベースのサイズが MAXSIZE に達すると、エラー コード 40544 が返されます。 この場合、データを挿入または更新したり、新しいオブジェクト (テーブル、ストアド プロシージャ、ビュー、関数など) を作成したりすることはできません。 データの読み取りと削除、テーブルの切り捨て、テーブルとインデックスの削除、およびインデックスの再構築は引き続き可能です。 これを解決するには、MAXSIZE を現在のデータベースのサイズより大きい値に更新するか、一部のデータを削除してストレージ領域を解放します。 新しいデータを挿入するまでに 15 分ほどの遅延が発生する場合があります。

後からサイズ、エディション、またはサービス目標の値を変更するには、ALTER DATABASE (Azure SQL Database) を使用します。

データベース のコピー

適用対象: 単一のデータベースおよびプールされたデータベースのみ。

CREATE DATABASE ステートメントを使用したデータベースのコピーは、非同期操作です。 そのため、SQL Database サーバーへの接続は、コピー プロセスの完全な期間は必要ありません。 CREATE DATABASE ステートメントは、sys.databases へのエントリが作成された後、データベース コピー操作が完了する前に、コントロールをユーザーに戻します。 つまり、CREATE DATABASE ステートメントは、データベース コピーがまだ進行しているときに正常に復帰します。

  • SQL Database サーバーでのコピー プロセスの監視: percentage_completereplication_state_desc 列または 列、または state ビューの sys.databases 列に対してクエリを実行します。 sys.dm_operation_status ビューを使用できるだけでなく、このビューからデータベース コピーを含むデータベース操作の状態も返されます。

コピー・プロセスが正常に完了すると、コピー先データベースはソース・データベースとトランザクション的に整合性が保たれます。

AS COPY OF 引数を使用する際、次の構文および意味上の規則が適用されます。

  • コピー先のサーバー名としてコピー元のサーバー名と同じ名前を使用することも別の名前を使用することもできます。 名前が同じである場合、このパラメーターは省略可能であり、現在のセッションのサーバー コンテキストが既定で使用されます。
  • ソース データベースと対象データベースの名前を指定する必要があります。これらの名前は、一意であり、識別子に関する SQL Server の規則に準拠している必要があります。 詳細については、「 データベース識別子」を参照してください。
  • CREATE DATABASE ステートメントは、新しいデータベースが作成される SQL Database サーバーの master データベースのコンテキスト内で実行される必要があります。
  • コピーの完了後、対象データベースは個別のデータベースとして管理する必要があります。 ALTER DATABASE ステートメントと DROP DATABASE ステートメントは、ソース データベースに影響を与えることなく、新しいデータベースに対して実行できます。 新しいデータベースを別の新しいデータベースにコピーすることもできます。
  • データベース コピーが進行中でも、ソース データベースへのアクセスは引き続き行われる可能性があります。

詳細については、「 Azure SQL Database でのデータベースのトランザクション整合性コピーのコピー」を参照してください。

重要

既定では、データベース コピーのバックアップ ストレージ冗長性は、そのソース データベースと同じ冗長性で作成されます。

アクセス許可

データベースを作成するには、ログインが次のいずれかのプリンシパルである必要があります。

CREATE DATABASE ... AS COPY OF 構文を使用するための追加要件: ローカル サーバー上でステートメントを実行しているログインは少なくともソース サーバー上の db_owner である必要があります。 ログインが SQL Server 認証に基づいている場合、ローカル サーバー上でステートメントを実行しているログインが、ソース SQL Database サーバー上にも同じ名前とパスワードで含まれている必要があります。

基本的な例

データベースを作成するための基本的な例。

CREATE DATABASE TestDB1;

エディションの基本的な例

汎用データベースを作成するための基本的な例。

CREATE DATABASE TestDB2
    (EDITION = 'GeneralPurpose');

追加のオプションの使用例

複数のオプションを使用する例です。

CREATE DATABASE hito
COLLATE Japanese_Bushu_Kakusu_100_CS_AS_KS_WS
( MAXSIZE = 500 MB, EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8' ) ;

データベース コピーの作成

データベースのコピーを作成する例です。

適用対象: 単一のデータベースおよびプールされたデータベースのみ。

CREATE DATABASE escuela
    AS COPY OF school;

エラスティック プール内でのデータベースの作成

S3M100 という名前のプール内に新しいデータベースを作成します。

適用対象: 単一のデータベースおよびプールされたデータベースのみ。

CREATE DATABASE db1
    (SERVICE_OBJECTIVE = ELASTIC_POOL (NAME = S3M100));

別の論理サーバー上でのデータベースのコピーの作成

次の例では、単一データベースの General Purpose サービス目標に db_original という名前のdb_copy データベースのコピーを作成します。 これは、db_original がエラスティック プール内にあるかどうか、または単一データベースのコンピューティング サイズ (サービス目標) に関係なく当てはまります。

適用対象: 単一のデータベースおよびプールされたデータベースのみ。

CREATE DATABASE db_copy
    AS COPY OF <database>.db_original
    (EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8');

次の例では、db_original という名前のエラスティック プール内に db_copy データベースのコピー ep1 を作成します。 これは、db_original がエラスティック プール内にあるかどうか、または単一データベースのコンピューティング サイズ (サービス目標) に関係なく当てはまります。 db_original が異なる名前のエラスティック プール内にある場合、db_copy は引き続き ep1 内に作成されます。

適用対象: 単一のデータベースおよびプールされたデータベースのみ。

CREATE DATABASE db_copy
    AS COPY OF <database>.db_original
    (SERVICE_OBJECTIVE = ELASTIC_POOL (NAME = ep1));

指定したカタログ照合順序の値のデータベースを作成する

次の例では、データベースの作成時にカタログの照合順序を DATABASE_DEFAULT に設定し、カタログの照合順序をデータベースの照合順序と同じに設定します。

CREATE DATABASE TestDB3 COLLATE Japanese_XJIS_140 (MAXSIZE = 100 MB, EDITION = 'Basic')
  WITH CATALOG_COLLATION = DATABASE_DEFAULT;

バックアップにゾーンの冗長性を使用したデータベースの作成

次の例では、データベース バックアップのゾーン冗長が設定されます。 ポイントインタイム リストア バックアップと長期保有バックアップ (構成されている場合) の両方で、同じバックアップ ストレージ冗長性が使用されます。

CREATE DATABASE test_zone_redundancy
  WITH BACKUP_STORAGE_REDUNDANCY = 'ZONE';

台帳データベースの作成

CREATE DATABASE MyLedgerDB (EDITION = 'GeneralPurpose')
    WITH LEDGER = ON;

オプションの変更中にデータベースのコピーとして作成する

次の例では、異なるサービス レベルやバックアップ ストレージの冗長性設定など、データベースの新しいコピーに対してさまざまなオプションを設定します。 既定では、データベース コピーはソース データベースと同じ設定で作成されます。

CREATE DATABASE copy_testdb
AS COPY OF [test_db]
  (EDITION = 'GeneralPurpose', SERVICE_OBJECTIVE = 'GP_Gen5_8')
  WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');

* SQL Managed Instance *

Azure SQL Managed Instance

概要

Azure SQL Managed Instance では、データベースを作成するためにこのステートメントを使用します。 マネージド インスタンス上にデータベースを作成するときは、データベース名と照合順序を指定します。

構文

構文表記規則の詳細については、「Transact-SQL 構文表記規則」を参照してください。

CREATE DATABASE database_name [ COLLATE collation_name ]
[ WITH <with_options> [ , ..n ] ]
[ ; ]

<with_options> ::=
{
  LEDGER = { ON | OFF }
}

重要

マネージ インスタンスでファイルを追加するかデータベースの包含を設定するには、ALTER DATABASE ステートメントを使います。

SQL マネージド インスタンスの場合、初期 MAXSIZE は暗黙的に現在のディスク サイズに設定され、Azure portal からディスク サイズを拡張しても自動的には変更されません。 ディスクを拡張した後、ALTER DATABASE を使用してMAXSIZEを拡張して、データベース ファイルの完全なエラーを回避する必要もあります。

引数

database_name

新しいデータベースの名前。 この名前は、SQL Server で一意であり、識別子に関する SQL Server の規則に準拠している必要があります。 詳細については、「 データベース識別子」を参照してください。

collation_name

データベースの既定の照合順序を指定します。 照合順序名には、Windows 照合順序名または SQL 照合順序名を指定できます。 指定しない場合、データベースには既定の照合順序が割り当てられ、 SQL_Latin1_General_CP1_CI_AS

Windows 照合順序と SQL 照合順序名の詳細については、 COLLATE を参照してください。

LEDGER = { ON |OFF }

ON に設定すると、台帳データベースが作成されます。ここでは、すべてのユーザー データの整合性が保護されます。 台帳データベースに作成できるのは、台帳テーブルだけです。 既定値は、OFF です。 LEDGER オプションの値は、データベースの作成後は変更できません。 詳細については、台帳データベースの構成に関するページを参照してください。

解説

Azure SQL Database 内のデータベースについては、データベースの作成時に設定される既定の設定がいくつかあります。 これらの既定の設定の詳細については、「DATABASEPROPERTYEX」の値の一覧を参照してください。

重要

CREATE DATABASE ステートメントが Transact-SQL バッチ内の唯一のステートメントである必要があります。

CREATE DATABASE には、次の制限があります。

  • ファイルとファイル グループは定義できません。

  • WITH WITH LEDGERを除き、オプションはサポートされていません。

    ヒント

    回避策としては、ALTER DATABASE を使い、 CREATE DATABASE の後でデータベース オプションを設定したり、ファイルを追加したりします。

アクセス許可

データベースを作成するには、ログインが次のいずれかのタイプのセキュリティプリンシパルである必要があります。

基本的な例

データベースを作成するための基本的な例。

CREATE DATABASE TestDB1;

台帳データベースの作成

CREATE DATABASE MyLedgerDB
    WITH LEDGER = ON;

* Azure Synapse
解析学*

Azure Synapse Analytics

概要

Azure Synapse では、Azure SQL Database サーバーでこのステートメントを使用して、専用 SQL プールを作成できます。 このステートメントでは、データベース名、照合順序、最大サイズ、エディション、およびサービス目標を指定します。

  • CREATE DATABASE は、Gen2 サービス レベルを使用するスタンドアロンの専用 SQL プール (旧称 SQL DW) でサポートされています。
  • CREATE DATABASE は、Azure Synapse Analytics ワークスペース内の専用 SQL プールではサポートされていません。 代わりに、Azure portal を使用します
  • CREATE DATABASE は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされています。

構文

構文表記規則の詳細については、「Transact-SQL 構文表記規則」を参照してください。

CREATE DATABASE database_name [ COLLATE collation_name ]
(
    [ MAXSIZE = {
          250 | 500 | 750 | 1024 | 5120 | 10240 | 20480 | 30720
        | 40960 | 51200 | 61440 | 71680 | 81920 | 92160 | 102400
        | 153600 | 204800 | 245760
      } GB ,
    ]
    EDITION = 'datawarehouse',
    SERVICE_OBJECTIVE = {
          'DW100c' | 'DW200c' | 'DW300c' | 'DW400c' | 'DW500c'
        | 'DW1000c' | 'DW1500c' | 'DW2000c' | 'DW2500c' | 'DW3000c' | 'DW5000c'
        | 'DW6000c' | 'DW7500c' | 'DW10000c' | 'DW15000c' | 'DW30000c'
    }
)
[ ; ]

引数

database_name

新しいデータベースの名前。 この名前は、Azure SQL Database データベースと Azure Synapse Analytics データベース内の両方のデータベースをホストでき、識別子に関する SQL Server の規則に従う、SQL Server に固有のものである必要があります。 詳細については、「 データベース識別子」を参照してください。

collation_name

データベースの既定の照合順序を指定します。 照合順序名には、Windows 照合順序名または SQL 照合順序名を指定できます。 指定しない場合、データベースには既定の照合順序が割り当てられ、 SQL_Latin1_General_CP1_CI_AS

Windows 照合順序名と SQL 照合順序名の詳細については、「 COLLATE」を参照してください。

MAXSIZE(最大サイズ)

既定値は 245,760 GB (240 TB) です。

適用対象: Gen1 コンピューティングに最適化

データベースの最大許容サイズ。 データベースは MAXSIZEを超えて拡張することはできません。

適用対象: Gen2 コンピューティングに最適化

データベースの行ストア データの最大許容サイズ。 行ストア テーブル、列ストア インデックスのデルタストア、またはクラスター化列ストア インデックスの非クラスター化インデックスに格納されているデータは、 MAXSIZEを超えて拡大することはできません。 列ストア形式に圧縮されたデータにはサイズ制限がないため、 MAXSIZEによって制約されません。

データベースのサービス層を指定します。 Azure Synapse Analytics の場合は datawarehouse を使用します。

SERVICE_OBJECTIVE

コンピューティング サイズ (サービス目標) を指定します。 Gen2 用のサービス レベルは、コンピューティング データ ウェアハウス単位 (cDWU) で測定されます (例: DW2000c)。 Gen1 サービス レベルは DWU の単位で計測されます (例: DW2000)。 Azure Synapse のサービス目標の詳細については、「Data Warehouse ユニット (DWU)」を参照してください。 Gen1 サービス目標 (一覧に含まれていないもの) はサポートされなくなりました。次のエラーが表示される可能性があります。 Azure SQL Data Warehouse Gen1 has been deprecated in this region. Please use SQL Analytics in Azure Synapse.

解説

データベースのプロパティを参照するには、DATABASEPROPERTYEX を使用します。

後で最大サイズ、またはサービス目標の値を変更するには、ALTER DATABASE - Azure Synapse Analytics を使用します。

Azure Synapse は COMPATIBILITY_LEVEL 130 に設定されており、変更することはできません。 詳細については、 ALTER DATABASE 互換性レベルを参照してください。

アクセス許可

必要なアクセスを許可:

  • プロビジョニング プロセスによって作成されたサーバー レベル プリンシパル ログイン、または
  • dbmanager データベース ロールのメンバー。

エラー処理

データベースのサイズが MAXSIZEに達すると、SQL Server によってエラー コード 40544 が発生します。 この場合、データを挿入および更新したり、新しいオブジェクト (テーブル、ストアド プロシージャ、ビュー、関数など) を作成したりすることはできません。 ただし、データの読み取りと削除、テーブルの切り捨て、テーブルとインデックスの削除、およびインデックスの再構築は引き続き可能です。 これを解決するには、MAXSIZE を現在のデータベースのサイズより大きい値に更新するか、一部のデータを削除してストレージ領域を解放します。 新しいデータを挿入できるようになるまでに、最大で 15 分の遅延が生じる可能性があります。

制限事項

新しいデータベースを作成するには、master データベースに接続している必要があります。

CREATE DATABASE ステートメントが Transact-SQL バッチ内の唯一のステートメントである必要があります。

データベースの作成後にデータベースの照合順序を変更することはできません。

例: Azure Synapse Analytics

A。 基本的な例

スタンドアロン専用 SQL プール (以前の SQL DW) を作成するための基本的な例。 これにより、最小の最大サイズ (10,240 GB)、既定の照合順序 (SQL_Latin1_General_CP1_CI_AS)、最小の Gen2 のサービス目標 (DW100c) のデータベースが作成されます。

CREATE DATABASE TestDW
    (EDITION = 'datawarehouse', SERVICE_OBJECTIVE = 'DW100c');

B. すべてのオプションを使用して、データ ウェアハウスのデータベースを作成

10 テラバイトのスタンドアロンの専用 SQL プール (旧称 SQL DW) を作成する例。

CREATE DATABASE TestDW COLLATE Latin1_General_100_CI_AS_KS_WS
(MAXSIZE = 10240 GB, EDITION = 'datawarehouse', SERVICE_OBJECTIVE = 'DW1000c');

C. Synapse Analytics サーバーレス SQL プールの基本的な例

これにより、照合順序 (Latin1_General_100_CI_AS_KS_WS) を指定して、サーバーレス プールにデータベースが作成されます。

CREATE DATABASE TestDW COLLATE Latin1_General_100_CI_AS_KS_WS;

* 分析プラットフォーム
システム (PDW) *

分析プラットフォーム システム

概要

Analytics Platform System の場合、このステートメントは、Analytics Platform System アプライアンス上で新しいデータベースを作成するために使用されます。 このステートメントを使用し、アプライアンス データベースに関連付けられているすべてのファイルを作成し、データベース テーブルとトランザクション ログの最大サイズと自動増加オプションを設定します。

構文

構文表記規則の詳細については、「Transact-SQL 構文表記規則」を参照してください。

CREATE DATABASE database_name
WITH (
    [ AUTOGROW = ON | OFF , ]
    REPLICATED_SIZE = replicated_size [ GB ] ,
    DISTRIBUTED_SIZE = distributed_size [ GB ] ,
    LOG_SIZE = log_size [ GB ] )
[ ; ]

引数

database_name

新しいデータベースの名前。 許容されるデータベース名の詳細については、分析プラットフォーム システム (PDW) の製品ドキュメントにある "オブジェクトの名前付け規則" と "予約済みデータベース名" を参照してください。

AUTOGROW = { ON |OFF }

replicated_sizedistributed_sizeおよび log_size パラメーターを、必要に応じて指定したサイズを超えて自動的に拡張するかどうかを指定します。 既定値は、OFF です。

AUTOGROWONされている場合、データ挿入、更新、またはその他の操作のたびに、既に割り当てられているよりも多くのストレージを必要とするreplicated_size、distributed_size、log_sizeが必要に応じて拡張されます

AUTOGROWOFFされている場合、サイズは自動的に拡大されません。 Analytics Platform System (PDW) は、指定した値を超えて拡張するために replicated_sizedistributed_size、または log_size を必要とするアクションを試みると、エラーを返します。

AUTOGROW は、すべてのサイズに対して ON か、すべてのサイズに対して OFF です。 たとえば、log_sizeのAUTOGROW ONを設定することはできませんが、replicated_sizeに設定することはできません。

replicated_size [ ギガバイト ]

正の数。 計算ノードごとに、複製テーブルと対応データに割り当てる合計領域のサイズを設定します (整数または 10 進数の GB)。 replicated_size の最小と最大の要件については、分析プラットフォーム システム (PDW) の製品ドキュメントの "最小値と最大値" を参照してください。

AUTOGROWONされている場合、レプリケート テーブルはこの制限を超えて拡張される可能性があります。

AUTOGROWOFFされている場合、ユーザーが新しいレプリケート テーブルの作成、既存のレプリケート テーブルへのデータの挿入、または既存のレプリケート テーブルの更新を試みた場合、replicated_sizeを超えるサイズを増やす方法でエラー返されます。

distributed_size [ ギガバイト ]

正の数。 アプライアンス全体で分散テーブル (と対応データ) に割り当てる合計領域のサイズ (整数または 10 進数の GB)。 distributed_size の最小と最大の要件については、分析プラットフォーム システム (PDW) の製品ドキュメントの "最小値と最大値" を参照してください。

AUTOGROWONされている場合、分散テーブルはこの制限を超えて拡張できます。

AUTOGROWOFFされている場合、ユーザーが新しい分散テーブルの作成、既存の分散テーブルへのデータの挿入、または既存の分散テーブルの更新をdistributed_sizeを超えてサイズを増やそうとすると、エラーが返されます

log_size [ ギガバイト ]

正の数。 アプライアンス全体のトランザクション ログのサイズ (整数または 10 進数の GB)。

log_size の最小と最大の要件については、分析プラットフォーム システム (PDW) の製品ドキュメントの "最小値と最大値" を参照してください。

AUTOGROWON場合、ログ ファイルはこの制限を超えて拡張することが許可されます。 DBCC SHRINKLOG - Analytics Platform System (PDW) ステートメントを使用して、ログ ファイルのサイズを元のサイズに縮小します。

AUTOGROWOFFされている場合、log_sizeを超えて個々のコンピューティング ノードのログ サイズを増やすアクションについて、エラーがユーザーに返されます。

アクセス許可

CREATE ANY DATABASE データベース内の master アクセス許可、または sysadmin 固定サーバー ロールでのメンバーシップが必要です。

次の例は、データベース ユーザー Fay にデータベースを作成する権限を与えます。

USE master;
GO

GRANT CREATE ANY DATABASE TO [Fay];
GO

解説

データベースはデータベース互換性レベル 120 で作成されます。これは SQL Server 2014 (12.x) の互換性レベルです。 これにより、データベースで PDW が使用するすべての SQL Server 2014 (12.x) 機能を使用できるようになります。

制限事項

CREATE DATABASE ステートメントは、明示的なトランザクションでは使用できません。 詳細については、 Transact-SQL ステートメントを参照してください。

データベースの最小と最大の制約については、分析プラットフォーム システム (PDW) の製品ドキュメントの "最小値と最大値" を参照してください。

データベースを作成するときは、次のサイズの組み合わせ合計を割り当てるために、計算ノードごとに十分な空き領域が必要になります。

  • テーブルのサイズが replicated_table_size の SQL Server データベース。
  • テーブルのサイズが (distributed_table_size / 計算ノードの数) の SQL Server データベース。
  • サイズが (log_size / 計算ノードの数) の SQL Server ログ。

ロック

DATABASE オブジェクトを共有ロックします。

メタデータ

この操作が成功すると、このデータベースのエントリが sys.databases および sys.objects メタデータ ビューに表示されます。

例: Analytics Platform System (PDW)

A。 基本的データベース作成の例

次の例では、データベース mytest を作成します。複製テーブルの記憶域割り当ては計算ノードごとに 100 GB、分散テーブルの記憶域割り当てはアプライアンスごとに 500 GB、トランザクション ログの記憶域割り当てはアプライアンスごとに 100 GB です。 この例では、 AUTOGROW はデフォルトでオフになっています。

CREATE DATABASE mytest
  WITH
    (REPLICATED_SIZE = 100 GB,
    DISTRIBUTED_SIZE = 500 GB,
    LOG_SIZE = 100 GB );

次の例では、mytestがオンになっていることを除いて、同じパラメータを使用してデータベース AUTOGROWを作成します。 指定サイズ パラメーターを超えてデータベースは増加できます。

CREATE DATABASE mytest
  WITH
    (AUTOGROW = ON,
    REPLICATED_SIZE = 100 GB,
    DISTRIBUTED_SIZE = 500 GB,
    LOG_SIZE = 100 GB);

B. 小数点以下を含む GB サイズでのデータベースの作成

次の例では、データベース mytestを作成します。 AUTOGROW オフでは、レプリケート テーブルの場合はコンピューティング ノードあたり 1.5 GB、分散テーブルの場合はアプライアンスあたり 5.25 GB、トランザクション ログの場合はアプライアンスごとに 10 GB のストレージ割り当てが行われます。

CREATE DATABASE mytest
  WITH
    (REPLICATED_SIZE = 1.5 GB,
    DISTRIBUTED_SIZE = 5.25 GB,
    LOG_SIZE = 10 GB);