CREATE DATABASE
新しいデータベースを作成します。
お使いの特定バージョンの 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_name および os_file_name を生成します。 生成された論理ファイル名が 128 文字を超えないようにするため、database_name は 123 文字に制限されます。
データ ファイル名が指定されていない場合、SQL Server では、logical_file_name および os_file_name の両方に database_name を使用します。 既定のパスはレジストリから取得されます。 既定のパスは、Management Studio の [サーバーのプロパティ] ([データベースの設定] ページ) 内で変更できます。 既定のパスを変更するには、SQL Server を再起動する必要があります。
CONTAINMENT = { NONE | PARTIAL }
適用対象: SQL Server 2012 (11.x) 以降
データベースの包含状態を指定します。 NONE = 非包含データベース。 PARTIAL = 部分的包含データベース。
ON
データベースのデータ部分の格納に使用するディスク ファイル (データ ファイル) を明示的に定義するように指定します。 プライマリ ファイル グループのデータ ファイルを定義する <filespec> 項目のコンマ区切りリストが続く場合は、ON にします。 プライマリ ファイル グループ内のファイルのリストに続き、ユーザー ファイル グループとそこに属するファイルを定義する省略可能な <filegroup> 項目のコンマ区切りリストを記述できます。
PRIMARY
関連付けられた <filespec> リストによってプライマリ ファイルを定義するように指定します。 プライマリ ファイル グループ内の <filespec> エントリに最初に指定されたファイルが、プライマリ ファイルとなります。 データベースはプライマリ ファイルを 1 つだけ保有することができます。 詳細については、「 Database Files and Filegroups」を参照してください。
PRIMARY を指定しないと、CREATE DATABASE ステートメント内に記述された最初のファイルがプライマリ ファイルになります。
LOG ON
データベース ログの格納に使用するディスク ファイル (ログ ファイル) を明示的に定義するように指定します。 LOG ON に続けて、ログ ファイルを定義する <filespec> 項目のコンマ区切りリストを記述します。 LOG ON が指定されていない場合、データベースのすべてのデータ ファイルのサイズの合計の 25%、または、512 KB のいずれか大きい方のサイズのログ ファイルが 1 つ自動的に作成されます。 このファイルは既定のログ ファイルの場所に保存されます。 この場所については、SSMS 内のデータ ファイルとログ ファイルの既定の場所の表示または変更に関するページを参照してください。
LOG ON はデータベース スナップショットでは指定できません。
COLLATE collation_name
データベースの既定の照合順序を指定します。 照合順序名には、Windows 照合順序名または SQL 照合順序名を指定できます。 指定しない場合は、データベースに SQL Server インスタンスの既定の照合順序が割り当てられます。 照合順序名は、データベース スナップショットでは指定できません。
照合順序名は、FOR ATTACH 句や FOR ATTACH_REBUILD_LOG 句と共に指定することはできません。 アタッチされたデータベースの照合順序を変更する方法の詳細については、この Microsoft Web サイトを参照してください。
Windows 照合順序名および SQL 照合順序名について詳しくは、「COLLATE」をご覧ください。
Note
包含データベースは、非包含データベースとは異なる方法で照合されます。 詳細については、「包含データベースの照合順序」を参照してください。
WITH <option>
<filestream_option>
NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL }
適用対象: 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 を作成する前に設定する必要があります。
次のオプションは、CONTAINMENT が PARTIAL に設定されている場合にのみ使用できます。 CONTAINMENT が NONE に設定されている場合、エラーが発生します。
DEFAULT_FULLTEXT_LANGUAGE = <lcid> | <language name> | <language alias>
適用対象: SQL Server 2012 (11.x) 以降
このオプションの詳細については、「default full-text language サーバー構成オプションの構成」を参照してください。
DEFAULT_LANGUAGE = <lcid> | <language name> | <language alias>
適用対象: SQL Server 2012 (11.x) 以降
このオプションの詳細については、「default language サーバー構成オプションの構成」を参照してください。
NESTED_TRIGGERS = { OFF | ON }
適用対象: SQL Server 2012 (11.x) 以降
このオプションの詳細については、「nested triggers サーバー構成オプションの構成」を参照してください。
TRANSFORM_NOISE_WORDS = { OFF | ON }
適用対象: SQL Server 2012 (11.x) 以降
このオプションの詳細については、「 トランスフォーム ノイズ ワード サーバー構成オプション 」を参照してください。
TWO_DIGIT_YEAR_CUTOFF = { 2049 | <any year between 1753 and 9999> }
年を表す 4 桁の数字。 既定値は 2049 です。 このオプションの詳細については、「two digit year cutoff サーバー構成オプションの構成」を参照してください。
DB_CHAINING { OFF | ON }
ON が指定されている場合、データベースを、複数データベースの組み合わせ所有権のソース データベースまたは対象データベースとして使用できます。
OFF の場合、データベースは、複数データベースの組み合わせ所有権に参加することはできません。 既定値は OFF です。
重要
SQL Server のインスタンスでは、cross db ownership chaining サーバー オプションが 0 (OFF) の場合に、この設定が認識されます。 cross db ownership chaining が 1 (ON) の場合は、このオプションの値にかかわらず、すべてのユーザー データベースが複数データベースの組み合わせ所有権に参加できます。 このオプションは、sp_configure を使用して設定します。
このオプションを設定するには、sysadmin 固定サーバー ロールのメンバーシップが必要です。 システム データベース master
、model
、tempdb
上で、DB_CHAINING オプションを設定することはできません。
TRUSTWORTHY { OFF | ON }
ON が指定されている場合、権限借用のコンテキストを使用するデータベース モジュール (ビュー、ユーザー定義関数、ストアド プロシージャなど) は、データベース外のリソースにアクセスできます。
OFF の場合、権限借用のコンテキスト内のデータベース モジュールは、データベース外のリソースにアクセスできません。 既定値は OFF です。
データベースがアタッチされている場合は常に、TRUSTWORTHY は OFF に設定されます。
既定では、msdb
データベースを除くすべてのシステム データベースで TRUSTWORTHY は OFF に設定されています。
model
および tempdb
データベースではこの値を変更できません。
master
データベースでは、TRUSTWORTHY オプションを ON に設定しないことを強くお勧めします。
PERSISTENT_LOG_BUFFER=ON ( 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 句に指定する必要があります。
Note
新しいバージョンの SQL Server で作成したデータベースは、それ以前のバージョンでアタッチすることはできません。
SQL Server では、アタッチされるデータベースに含まれているフルテキスト ファイルも、すべてデータベースと共にアタッチされます。 フルテキスト カタログの新しいパスを指定するには、フルテキストのオペレーティング システム ファイル名を含めずに新しい場所を指定します。 詳細については、「例」のセクションを参照してください。
"ディレクトリ名" の FILESTREAM オプションを含むデータベースを SQL Server インスタンスにアタッチすると、Database_Directory 名が一意であることを確認する要求が SQL Server に対して行われます。 そうでない場合は、 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 を使用する場合は、FOR ATTACH 句で WITH <service_broker_option> を使用します。
データベースの 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 を実行してレプリケーションを削除する必要があります。
Note
アタッチは 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 を実行し、さらに、そのデータベースのストアド プロシージャやその他のユーザー定義コードなどのコードを調べます。
Note
データベースをアタッチするとき、TRUSTWORTHY オプションおよび DB_CHAINING オプションの効果はありません。
FOR ATTACH_REBUILD_LOG
既存のオペレーティング システム ファイルのセットをアタッチすることによりデータベースを作成するように指定します。 このオプションは読み取り/書き込みデータベースに限定されます。 プライマリ ファイルを指定する <filespec> エントリが必要です。 1 つ以上のトランザクション ログ ファイルが見つからない場合、ログ ファイルは再構築されます。 ATTACH_REBUILD_LOG を指定すると、1 MB のログ ファイルが自動的に新規作成されます。 このファイルは既定のログ ファイルの場所に保存されます。 この場所については、SSMS 内のデータ ファイルとログ ファイルの既定の場所の表示または変更に関するページを参照してください。
Note
ログ ファイルが利用可能な場合、データベース エンジンはログ ファイルを再構築せず、それらのファイルを使用します。
FOR ATTACH_REBUILD_LOG に必要な条件は次のとおりです。
- データベースのクリーン シャットダウン。
- すべてのデータ ファイル (MDF および NDF) が有効であること。
重要
この操作により、連続したログ バックアップが中断されます。 操作が完了したら、データベース全体のバックアップを行うことをお勧めします。 詳細については、バックアップに関するページを参照してください。
通常、FOR ATTACH_REBUILD_LOG は、大きなログを持つ読み取り/書き込みデータベースを別のサーバーにコピーする場合に使用します。このようなサーバーでは、コピーしたデータベースが、多くの場合読み取り操作に使用されます (または読み取り操作でのみ使用されます)。このため、元のデータベースほどログ領域を必要としません。
FOR ATTACH_REBUILD_LOG はデータベース スナップショットでは指定できません。
データベースのアタッチおよびデタッチの詳細については、データベースのデタッチとアタッチに関するページを参照してください。
<filespec>
ファイル プロパティを制御します。
NAME logical_file_name
ファイルの論理名を指定します。 NAME は、FOR ATTACH 句の 1 つを指定する場合以外に、FILENAME が指定されるときに必要です。 FILESTREAM ファイル グループの名前を PRIMARY にすることはできません。
logical_file_name
ファイルを参照するときに SQL Server で使用される論理名を指定します。 Logical_file_name は、データベース内で一意であり、識別子の規則に従っている必要があります。 この名前は、文字定数、UNICODE 定数、標準の識別子、区切られた識別子のいずれでもかまいません。
FILENAME { 'os_file_name' | 'filestream_path' }
オペレーティング システムの (物理) ファイル名を指定します。
'os_file_name'
ファイルを作成する際にオペレーティング システムが使用するパスとファイル名です。 ファイルは、SQL Server がインストールされているローカル サーバー、ストレージ エリア ネットワーク (SAN)、または、iSCSI ベースのネットワークのうちのいずれかのデバイスに存在する必要があります。 指定したパスは、CREATE DATABASE ステートメントを実行する前に存在する必要があります。 詳細については、この記事の後半の「データベース ファイルとファイル グループ」を参照してください。
ファイルに対して UNC パスが指定されている場合は、SIZE、MAXSIZE、および FILEGROWTH パラメーターを設定できます。
ファイルが未処理のパーティション上にある場合、os_file_name には、未処理になっている既存のパーティションのドライブ文字のみを指定する必要があります。 1 つの未処理のパーティションに作成できるのは 1 つのデータ ファイルだけです。
Note
未処理のパーティションは、SQL Server 2014 以降のバージョンではサポートされていません。
ファイルが読み取り専用のセカンダリ ファイルであるか、データベースが読み取り専用である場合を除き、データ ファイルを圧縮ファイル システム上に置かないでください。 ログ ファイルは、圧縮ファイル システム上に置くことはできません。
'filestream_path'
FILESTREAM ファイル グループの場合、FILENAME は FILESTREAM データが格納されるパスを参照します。 最後のフォルダーまでのパスが存在する必要がありますが、最後のフォルダーは存在できません。 たとえば、パス C:\MyFiles\MyFilestreamData
を指定する場合は、ALTER DATABASE を実行する前に、C:\MyFiles
が存在している必要がありますが、MyFilestreamData
フォルダーは存在できません。
ファイル グループとファイル (<filespec>
) は、同じステートメントで作成する必要があります。
SIZE プロパティおよび FILEGROWTH プロパティは、FILESTREAM ファイル グループには適用されません。
SIZE size
ファイルのサイズを指定します。
os_file_name が UNC パスとして指定されている場合、SIZE を指定することはできません。 SIZE は、FILESTREAM ファイル グループには適用されません。
size
ファイルの初期サイズです。
プライマリ ファイルに size が指定されていない場合、データベース エンジンでは、model
データベースのプライマリ ファイルのサイズが使用されます。
model
データベースの既定のサイズは 8 MB (SQL Server 2016 (13.x) 以降) または 1 MB (それより前のバージョン) です。 セカンダリ データ ファイルまたはログ ファイルが指定されているにもかかわらず、そのファイルに対して size が指定されていない場合、データベース エンジンでは、そのファイルのサイズが 8 MB (SQL Server 2016 (13.x) 以降) または 1 MB (それより前のバージョン) になります。 プライマリ ファイルに対して指定するサイズは、model
データベースのプライマリ ファイルのサイズ以上である必要があります。
サフィックスとして、キロバイト (KB)、メガバイト (MB)、ギガバイト (GB)、またはテラバイト (TB) を使用できます。 既定値は MB です。 整数を指定し、 小数を含めないでください。 size は整数値です。 2,147,483,647 を超える値に対しては、より大きな単位を使用してください。
MAXSIZE max_size
ファイルのサイズの上限を指定します。 os_file_name が UNC パスとして指定されている場合、MAXSIZE を指定することはできません。
max_size
ファイルの最大サイズです。 サフィックスとして、KB、MB、GB、および TB を使用できます。 既定値は MB です。 整数を指定し、 小数を含めないでください。 max_size を指定しないと、ファイルはディスク領域がなくなるまで拡張されます。 max_size は整数値です。 2,147,483,647 を超える値に対しては、より大きな単位を使用してください。
UNLIMITED
ディスクがいっぱいになるまでファイルを拡張するように指定します。 SQL Server では、無制限に拡張するファイル固有のログの最大サイズは 2 TB で、データ ファイルの最大サイズは 16 TB です。
Note
FILESTREAM コンテナーに対してこのオプションを指定した場合、最大サイズはありません。 ディスクがいっぱいになるまでファイル サイズが拡張します。
FILEGROWTH growth_increment
ファイルを自動拡張するときの増加量を指定します。 ファイルの FILEGROWTH の設定を MAXSIZE の設定より大きくすることはできません。 os_file_name が UNC パスとして指定されている場合、FILEGROWTH を指定することはできません。 FILEGROWTH は、FILESTREAM ファイル グループには適用されません。
growth_increment
新しい領域が必要とされるたびにファイルに追加される領域の容量です。
値は MB、KB、GB、TB または % の単位で指定できます。 サフィックス MB、KB、または % を付けないで数値を指定した場合の既定値は MB です。 % を指定すると、1 回の増加量は、増加時のファイル サイズに指定されたパーセンテージを掛けた値になります。 指定されたサイズは、最も近い 64 KB 単位の値に丸められ、最小値は 64 KB になります。
0 は、自動拡張がオフで、領域を追加できないことを示します。
FILEGROWTH が指定されていない場合、既定値は次のとおりです。
Version | 既定値 |
---|---|
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>
ファイル グループ プロパティを制御します。 ファイル グループは、データベース スナップショットでは指定できません。
FILEGROUP filegroup_name
ファイル グループの論理名です。
filegroup_name
filegroup_name はデータベース内で一意である必要があり、システムで提示された名前である PRIMARY や PRIMARY_LOG にすることはできません。 この名前は、文字定数、UNICODE 定数、標準の識別子、区切られた識別子のいずれでもかまいません。 名前は、識別子のルールに従っている必要があります。
CONTAINS FILESTREAM
ファイル グループで FILESTREAM バイナリ ラージ オブジェクト (BLOB) をファイル システムに格納することを指定します。
DEFAULT
指定されたファイル グループが、データベースの既定のファイル グループであることを指定します。
CONTAINS MEMORY_OPTIMIZED_DATA
適用対象: SQL Server 2014 (12.x) 以降
ファイル グループで memory_optimized データをファイル システムに格納することを指定します。 詳細については、インメモリ最適化の概要と使用シナリオに関するページをご覧ください。 MEMORY_OPTIMIZED_DATA ファイル グループは、1 つのデータベースにつき 1 つしか許可されません。 メモリ最適化データを格納するファイルグループを作成するコード サンプルについては、「メモリ最適化テーブルおよびネイティブ コンパイル ストアド プロシージャの作成」を参照してください。
database_snapshot_name
新規データベース スナップショットの名前です。 データベース スナップショット名は、SQL Server のインスタンス内で一意であり、識別子のルールに従っている必要があります。 database_snapshot_name は 128 文字以下です。
ON ( NAME =logical_file_name, FILENAME ='os_file_name') [ ,... n ]
データベース スナップショットを作成するには、ソース データベースのファイルのリストを指定します。 スナップショットが機能するためには、すべてのデータ ファイルを個別に指定する必要があります。 ただし、データベース スナップショットにログ ファイルは指定できません。 FILESTREAM ファイル グループは、データベース スナップショットではサポートされていません。 CREATE DATABASE ON 句に FILESTREAM データ ファイルが含まれていると、ステートメントが失敗してエラーが発生します。
NAME、FILENAME、およびそれらの値については、相当する <filespec> 値の説明を参照してください。
Note
データベース スナップショットを作成する場合、他の <filespec> オプションおよびキーワード PRIMARY は許可されません。
AS SNAPSHOT OF source_database_name
作成されるデータベースが、source_database_name によって指定されたソース データベースのデータベース スナップショットであることを指定します。 スナップショットとソース データベースは同じインスタンス上に存在する必要があります。
SQL Server 2019 より前では、データベース スナップショットのソース データベースに MEMORY_OPTIMIZED_DATA ファイルグループを含めることはできません。 メモリ内データベース スナップショットのサポートは、SQL Server 2019 で追加されました。
詳細については、データベース スナップショットに関するページを参照してください。
解説
master データベースは、ユーザー データベースが作成、変更、または削除されるたびにバックアップする必要があります。
CREATE DATABASE
ステートメントは自動コミット モード (既定のトランザクション管理モード) で実行する必要があり、明示的または暗黙的なトランザクションでは許可されません。
1 つの CREATE DATABASE
ステートメントを使用して、データベースおよびデータベースを格納するファイルを作成することができます。 SQL Server では、次の手順を使用して CREATE DATABASE ステートメントを実装します。
- SQL Server で、model データベースのコピーを使用して、データベースとそのメタデータを初期化します。
- Service Broker GUID がデータベースに割り当てられます。
- 次に、データベース エンジンは、データベース内の領域の使用状況を記録する内部データが格納されるページを除いて、データベースの残りの部分に空のページを挿入します。
SQL Server のインスタンスには、最大 32,767 個のデータベースを指定できます。
各データベースには、データベース内で特殊な操作を実行できる所有者が存在します。 所有者はデータベースを作成するユーザーです。 ALTER AUTHORIZATION を使用して、データベース所有者を変更できます。
一部のデータベース機能は、データベースの機能をすべて利用するためにファイル システムに存在する機能または能力に依存しています。 ファイル システムの機能セットに依存する機能の例をいくつか挙げます。
- DBCC CHECKDB
- FileStream
- VSS とファイルのスナップショットを使用したオンライン バックアップ
- データベース スナップショットの作成
- メモリ最適化データ ファイル グループ
データベース ファイルとファイル グループ
すべてのデータベースには、プライマリ ファイルとトランザクション ログ ファイルという少なくとも 2 つのファイル、および少なくとも 1 つのファイル グループがあります。 各データベースに、最大 32,767 のファイルと 32,767 のファイル グループを指定できます。
データベースを作成する際に、データ ファイルのサイズは、データベースに記述されるデータの最大量を基に可能な限り大きく設定しておきます。
SQL Server データベース ファイルのストレージには、ストレージ エリア ネットワーク (SAN)、iSCSI ベースのネットワーク、または、ローカルにアタッチされたディスクを使用することをお勧めします。この構成により、SQL Server のパフォーマンスと信頼性を最適化することができるためです。
データベース スナップショット
CREATE DATABASE
ステートメントを使用して、"ソース データベース" の読み取り専用の静的ビューである "データベース スナップショット" を作成できます。 データベース スナップショットは、スナップショットが作成された時点で存在していたソース データベースと、トランザクション的に一貫性があります。 ソース データベースは複数のスナップショットを持つことができます。
Note
データベース スナップショットを作成する際、CREATE DATABASE
ステートメントを使用して、ログ ファイル、オフライン ファイル、復元ファイル、および現存しないファイルを参照することはできません。
データベース スナップショットの作成に失敗した場合、スナップショットは問題のある状態となり、削除する必要があります。 詳細については、DROP DATABASE に関するページを参照してください。
各スナップショットは、DROP DATABASE
を使用して削除されるまで保持されます。
詳細については、「データベース スナップショット」および「データベース スナップショットの作成 (Transact-SQL)」を参照してください。
データベース オプション
データベースを作成するたびに、いくつかのデータベース オプションが自動的に設定されます。 これらのオプションの一覧については、ALTER DATABASE SET オプションに関するページを参照してください。
model データベースと新しいデータベースの作成
model データベース内にあるすべてのユーザー定義のオブジェクトは、新しく作成されたすべてのデータベースにコピーされます。 テーブル、ビュー、ストアド プロシージャ、データ型など、あらゆるオブジェクトを model
データベースに追加し、新しく作成されるすべてのデータベースに含めることができます。
CREATE DATABASE <database_name>
ステートメントがサイズ パラメーターを追加せずに指定されている場合、プライマリ データ ファイルは、model
データベースのプライマリ ファイルと同じサイズになります。
FOR ATTACH
が指定されていない限り、それぞれの新しいデータベースは、model
データベースからデータベース オプションの設定を継承します。 たとえば、auto shrink データベース オプションは、 データベースにおいても、作成するどの新規データベースにおいても、model
に設定されます。
model
データベースのオプションを変更すると、これらの新しいオプション設定が、作成する新規のデータベースで使用されます。
model
データベースの操作の変更は、既存のデータベースには影響を与えません。 CREATE DATABASE ステートメントで FOR ATTACH を指定すると、新しいデータベースは元のデータベースからデータベース オプションの設定を継承します。
データベース情報の表示
カタログ ビュー、システム関数、およびシステム ストアド プロシージャを使用して、データベース、ファイルおよびファイル グループについての情報を返すことができます。 詳細については、システム ビューに関するページを参照してください。
アクセス許可
CREATE DATABASE
、CREATE ANY DATABASE
、または ALTER ANY DATABASE
アクセス許可が必要です。
SQL Server のインスタンスでのディスク使用の制御を維持するために、データベースを作成するアクセス許可は通常、いくつかのログインに制限されます。
次の例では、データベース ユーザー Fay
にデータベースを作成する権限を提供します。
USE master;
GO
GRANT CREATE DATABASE TO [Fay];
GO
データおよびログ ファイルに対する権限
SQL Server では、各データベースのデータ ファイルとログ ファイルに一定の権限が設定されます。 次の操作がデータベースに適用されるたびに、次の権限が設定されます。
- アタッチ
- バックアップ
- 作成済み
- デタッチ
- 変更して新しいファイルを追加
- 復元
この権限は、開く権限のあるディレクトリにファイルが存在する場合に、そのファイルが誤って書き換えられるのを防ぎます。
Note
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 = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB ) ;
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 = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = Arch2,
FILENAME = 'D:\SalesData\archdat2.ndf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
( NAME = Arch3,
FILENAME = 'D:\SalesData\archdat3.ndf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20)
LOG ON
(NAME = Archlog1,
FILENAME = 'D:\SalesData\archlog1.ldf',
SIZE = 100MB,
MAXSIZE = 200,
FILEGROWTH = 20),
(NAME = Archlog2,
FILENAME = 'D:\SalesData\archlog2.ldf',
SIZE = 100MB,
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 = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 5MB ) ;
GO
E. データベースのアタッチ
次の例では、例 D で作成された Archive
データベースをデタッチしてから、FOR ATTACH
句を使用してこのデータベースをアタッチします。
Archive
は、複数のデータおよびログ ファイルを保有するように定義されています。 しかし、ファイルの場所が作成時から変更されていないため、FOR ATTACH
句に指定する必要があるのは、プライマリ ファイルのみです。 SQL Server 2005 (9.x) 以降では、アタッチされているデータベースの一部であるフルテキスト ファイルは、データベースと共にアタッチされます。
USE master;
GO
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. 移動されたフルテキスト カタログをアタッチする
次の例では、フルテキスト カタログ AdvWksFtCat
を AdventureWorks2022
のデータおよびログ ファイルと共にアタッチします。 この例では、フルテキスト カタログは、既定の場所から新しい場所、c:\myFTCatalogs
に移されます。 データおよびログ ファイルは、それぞれの既定の場所に残ります。
USE master;
GO
--Detach the AdventureWorks2022 database
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
I. 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 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 = 10MB
,MAXSIZE = 50MB
,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 will be 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 = 5MB
,MAXSIZE = 25MB
,FILEGROWTH = 5MB
)'
);
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 = 100MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 1MB
),
FILEGROUP [FS] CONTAINS FILESTREAM DEFAULT
(
NAME = N'FS1',
FILENAME = N'C:\BlobStore\FS1',
MAXSIZE = UNLIMITED
),
(
NAME = N'FS2',
FILENAME = N'C:\BlobStore\FS2',
MAXSIZE = 100MB
)
LOG ON
(
NAME = N'BlobStore1_log',
FILENAME = N'C:\BlobStore\BlobStore1_log.ldf',
SIZE = 100MB,
MAXSIZE = 1GB,
FILEGROWTH = 1MB
);
GO
ALTER DATABASE [BlobStore1]
ADD FILE
(
NAME = N'FS3',
FILENAME = N'C:\BlobStore\FS3',
MAXSIZE = 100MB
)
TO FILEGROUP [FS];
GO
関連するコンテンツ
* SQL Database *
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' } ) ]
[;]
引数
database_name
新しいデータベースの名前。 この名前は、SQL Server で一意であり、識別子に関する SQL Server の規則に準拠している必要があります。 詳細については、「データベース識別子」を参照してください。
Collation_name
データベースのデータに対する既定の照合順序を指定します。 オブジェクト識別子などのシステム メタデータに CATALOG_COLLATION
を指定します。
照合順序名には、Windows 照合順序名または SQL 照合順序名を指定できます。 指定しない場合、既定の照合順序である SQL_Latin1_General_CP1_CI_AS がデータベースに割り当てられます。
Windows と SQL の照合順序名の詳細については、COLLATE (Transact-SQL) に関するページを参照してください。
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'}
データベースのポイントインタイム リストア バックアップおよび長期保有バックアップがどのように複製されるかを指定します。 Geo リストアまたは地域的な障害からの復旧機能は、データベースが GEO
バックアップ ストレージの冗長性を使用して作成されている場合にのみ使用できます。 明示的に指定しない限り、T-SQL で作成されたデータベースは geo 冗長バックアップ ストレージを使用します。
T-SQL を使用してデータベースを作成するときにデータ所在地を適用するには、BACKUP_STORAGE_REDUNDANCY パラメーターに対する入力として LOCAL
または ZONE
を使用します。
AS COPY OF
を使用して別のデータベースのコピーとしてデータベースを作成する場合は、オプションの指定がサポートされており、かっこで囲む必要があります。 たとえば、WITH (BACKUP_STORAGE_REDUNDANCY = 'LOCAL');
のようにします。
LEDGER = {ON | OFF }
ON
に設定すると、台帳データベースが作成されます。ここでは、すべてのユーザー データの整合性が保護されます。 台帳データベースに作成できるのは、台帳テーブルだけです。 既定値は、OFF
です。 データベースを作成した後に、LEDGER
オプションの値を変更することはできません。 詳細については、台帳データベースの構成に関するページを参照してください。
MAXSIZE
データベースの最大サイズを指定します。 MAXSIZE は、指定した EDITION (サービス レベル) に対して有効である必要があります。
次に示すのは、サービス レベルでサポートされる MAXSIZE 値と既定値 (D) です。
Note
MAXSIZE 引数は、ハイパースケール サービス層の単一データベースには適用されません。 単一 Hyperscale レベルのデータベースは、必要に応じて最大 128 TB まで拡張されます。 SQL Database サービスによってストレージが自動的に追加されます。最大サイズを設定する必要はありません。
SQL Database サーバー上の単一のデータベースおよびプールされたデータベースの DTU モデル
MAXSIZE | Basic | S0-S2 | S3-S12 | P1-P6 | P11-P15 |
---|---|---|---|---|---|
100 MB | √ | √ | √ | √ | √ |
500 MB | √ | √ | √ | √ | √ |
1 GB | √ | √ | √ | √ | √ |
2 GB | √ (D) | √ | √ | √ | √ |
5 GB | 該当なし | √ | √ | √ | √ |
10 GB | 該当なし | √ | √ | √ | √ |
20 GB | 該当なし | √ | √ | √ | √ |
30 GB | 該当なし | √ | √ | √ | √ |
40 GB | 該当なし | √ | √ | √ | √ |
50 GB | 該当なし | √ | √ | √ | √ |
100 GB | 該当なし | √ | √ | √ | √ |
150 GB | 該当なし | √ | √ | √ | √ |
200 GB | 該当なし | √ | √ | √ | √ |
250 GB | 該当なし | √ (D) | √ (D) | √ | √ |
300 GB | 該当なし | 該当なし | √ | √ | √ |
400 GB | 該当なし | 該当なし | √ | √ | √ |
500 GB | 該当なし | 該当なし | √ | √ (D) | √ |
750 GB | 該当なし | 該当なし | √ | √ | √ |
1,024 GB | 該当なし | 該当なし | √ | √ | √ (D) |
1,024 GB から 4,096 GB まで 256 GB の増分* | 該当なし | 該当なし | 該当なし | 該当なし | √ |
* P11 および P15 では最大 4 TB の MAXSIZE が許可され、1,024 GB が既定のサイズになります。 P11 と P15 では、追加料金なしで付属のストレージを 4 TB まで使用できます。 次の地域の Premium レベルでは、現在 1 TB を超える MAXSIZE を使用できます: 米国東部 2、米国西部、US Gov バージニア、西ヨーロッパ、ドイツ中部、東南アジア、東日本、オーストラリア東部、カナダ中部、カナダ東部。 DTU モデルのリソース制限の詳細については、「 DTU リソース制限を参照してください。
DTU モデルの MAXSIZE 値。指定される場合は、前の表に示すように指定されたサービス レベルで有効な値である必要があります。
仮想コア購入モデルの最大データ サイズや tempdb
のサイズなどの制限については、単一データベースのリソース制限またはエラスティック プールのリソース制限に関する記事をご覧ください。
仮想コア モデルを使用するときに MAXSIZE
値が設定されていない場合、既定値は 32 GB です。 仮想コア モデルのリソース制限の詳細については、「 仮想コアリソースの制限を参照してください。
EDITION
データベースのサービス層を指定します。
単一およびプールされたデータベース。 使用できる値は次のとおりです。'Basic'、'Standard'、'Premium'、'GeneralPurpose'、'BusinessCritical'、'Hyperscale'。
引数 MAXSIZE および EDITION には、以下の規則が適用されます。
- EDITION が指定され、MAXSIZE が指定されていない場合は、エディションの既定値が使用されます。 たとえば、EDITION が Standard に設定され、MAXSIZE が指定されていない場合、MAXSIZE は自動的に 250 MB に設定されます。
- MAXSIZE も EDITION も指定されていない場合、EDITION は
GeneralPurpose
に設定され、MAXSIZE は 32 GB に設定されます。
SERVICE_OBJECTIVE
コンピューティング サイズとサービス目標を指定します。
- DTU 購入モデルの場合:
S0
、S1
、S2
、S3
、S4
、S6
、S7
、S9
、S12
、P1
、P2
、P4
、P6
、P11
、P15
- 最新の仮想コア購入モデルの場合は、レベルを選び、あらかじめ設定されている値の一覧から仮想コアの数を指定します。ここで、仮想コアの数は
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_OBJECTIVE が EDITION によってサポートされていない場合は、エラーが返されます。 SERVICE_OBJECTIVE の値をある階層から別の階層に変更する場合 (たとえば、S1 から P1) は、EDITION の値も変更する必要があります。 PRS サービスの目標のサポートはなくなりました。
ELASTIC_POOL (name = <elastic_pool_name>)
適用対象: 単一のデータベースおよびプールされたデータベースのみ。 ハイパースケール サービス層のデータベースには適用されません。 弾力性のあるデータベース プールで新しいデータベースを作成するには、データベースの SERVICE_OBJECTIVE を ELASTIC_POOL に設定し、プールの名前を指定します。 詳しくは、SQL Database エラスティック プールの作成と管理に関するページをご覧ください。
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 サーバー上にある場合は省略可能です。
Note
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_complete
のreplication_state_desc
または 列、もしくはstate
ビューの 列にクエリを発行します。 sys.dm_operation_status ビューを使用できるだけでなく、このビューからデータベース コピーを含むデータベース操作の状態も返されます。
コピー プロセスが正常に完了した時点で、ソース データベースに対するトランザクションが対象データベースに反映されています。
AS COPY OF
引数を使用する際、次の構文および意味上の規則が適用されます。
- コピー先のサーバー名としてコピー元のサーバー名と同じ名前を使用することも別の名前を使用することもできます。 名前が同じである場合、このパラメーターは省略可能であり、現在のセッションのサーバー コンテキストが既定で使用されます。
- ソース データベースと対象データベースの名前を指定する必要があります。これらの名前は、一意であり、識別子に関する SQL Server の規則に準拠している必要があります。 詳細については、「データベース識別子」を参照してください。
-
CREATE DATABASE
ステートメントは、新しいデータベースが作成される SQL Database サーバーのmaster
データベースのコンテキスト内で実行される必要があります。 - コピーの完了後、対象データベースは個別のデータベースとして管理する必要があります。
ALTER DATABASE
ステートメントとDROP DATABASE
ステートメントは、ソース データベースに影響を与えることなく、新しいデータベースに対して実行できます。 新しいデータベースを別の新しいデータベースにコピーすることもできます。 - データベース コピーが進行中でも、ソース データベースへのアクセスは引き続き行われる可能性があります。
詳細については、Transact-SQL を使った Azure SQL Database のコピーの作成に関するページを参照してください。
重要
既定では、データベース コピーのバックアップ ストレージ冗長性は、そのソース データベースと同じ冗長性で作成されます。
アクセス許可
データベースを作成するには、ログインが次のいずれかのプリンシパルである必要があります。
- サーバー レベル プリンシパル ログイン
- Azure の logical サーバーの Microsoft Entra 管理者
-
dbmanager
データベース ロールのメンバーであるログイン
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 ozabzw7545.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 ozabzw7545.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 (Transact-SQL) に関するページを参照してください。
LEDGER = {ON | OFF }
ON
に設定すると、台帳データベースが作成されます。ここでは、すべてのユーザー データの整合性が保護されます。 台帳データベースに作成できるのは、台帳テーブルだけです。 既定値は、OFF
です。 データベースを作成した後に、LEDGER
オプションの値を変更することはできません。 詳細については、台帳データベースの構成に関するページを参照してください。
解説
Azure SQL Database 内のデータベースについては、データベースの作成時に設定される既定の設定がいくつかあります。 これらの既定の設定の詳細については、「DATABASEPROPERTYEX」の値の一覧を参照してください。
重要
CREATE DATABASE
ステートメントが Transact-SQL バッチ内の唯一のステートメントである必要があります。
CREATE DATABASE
には、次の制限があります。
ファイルおよびファイル グループを定義することはできません。
WITH
を除き、WITH LEDGER
オプションはサポートされていません。ヒント
回避策としては、ALTER DATABASE を使い、
CREATE DATABASE
の後でデータベース オプションを設定したり、ファイルを追加したりします。
アクセス許可
データベースを作成するには、次のいずれかでログインする必要があります。
- サーバー レベル プリンシパル ログイン
- Azure の logical サーバーの Microsoft Entra 管理者
-
dbcreator
データベース ロールのメンバーであるログイン
例
簡単な例
データベースを作成するための簡単な例です。
CREATE DATABASE TestDB1;
台帳データベースの作成
CREATE DATABASE MyLedgerDB WITH LEDGER = ON;
関連するコンテンツ
* Azure Synapse
Analytics *
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 (Transact-SQL) に関するページを参照してください。
MAXSIZE
既定値は 245,760 GB (240 TB) です。
適用対象: Gen1 コンピューティングに最適化
データベースの最大許容サイズ。 データベースは MAXSIZE を超えることはできません。
適用対象: Gen2 コンピューティングに最適化
データベースの行ストア データの最大許容サイズ。 行ストア テーブル、列ストア インデックスのデルタストア、またはクラスター化列ストア インデックスの非クラスター化インデックスに格納されているデータは MAXSIZE を超えることはできません。 列ストア形式に圧縮されたデータにはサイズ制限はなく、MAXSIZE に制約されません。
EDITION
データベースのサービス層を指定します。 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 に設定されており、変更することはできません。 詳細については、「Azure SQL Database の互換性レベル 130 によるクエリ パフォーマンスの向上」を参照してください。
アクセス許可
必要なアクセスを許可:
- プロビジョニング プロセスによって作成されたサーバー レベル プリンシパル ログイン、または
-
dbmanager
データベース ロールのメンバー。
エラー処理
データベースのサイズが MAXSIZE に達するとエラー コード 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_size、distributed_size、log_size パラメーターを必要に応じ、指定サイズを超えて自動増加するのかどうかを指定します。 既定値は OFF です。
AUTOGROW が ON の場合、replicated_size、distributed_size、log_size は、割り当て以上の記憶域を必要とするデータの挿入、更新、その他のアクションごとに、必要に応じて増加します (最初に指定したサイズのブロックではなく)。
AUTOGROW が OFF の場合、サイズは自動増加しません。 分析プラットフォーム システム (PDW) は、replicated_size、distributed_size、log_size がその指定値を超えて増加することが要求されるアクションを試行するとエラーを返します。
AUTOGROW はすべてのサイズに対して ON にするか、すべてのサイズに対して OFF にします。 たとえば、log_size に対して AUTOGROW を ON に設定し、replicated_size に対しては ON に設定しないということはできません。
replicated_size [ GB ]
正の数。 計算ノードごとに、複製テーブルと対応データに割り当てる合計領域のサイズを設定します (整数または 10 進数の GB)。 replicated_size の最小と最大の要件については、分析プラットフォーム システム (PDW) の製品ドキュメントの "最小値と最大値" を参照してください。
AUTOGROW が ON の場合、複製テーブルはこの上限を超えて増加できます。
AUTOGROW が OFF の場合、ユーザーが新しい複製テーブルを作成しようとしたり、既存の複製テーブルにデータを挿入しようとしたり、サイズが replicated_size を超えるのに既存の複製テーブルを更新しようとするとエラーが返されます。
distributed_size [ GB ]
正の数。 アプライアンス全体で分散テーブル (と対応データ) に割り当てる合計領域のサイズ (整数または 10 進数の GB)。 distributed_size の最小と最大の要件については、分析プラットフォーム システム (PDW) の製品ドキュメントの "最小値と最大値" を参照してください。
AUTOGROW が ON の場合、分散テーブルはこの上限を超えて増加できます。
AUTOGROW が OFF の場合、ユーザーが新しい分散テーブルを作成しようとしたり、既存の分散テーブルにデータを挿入しようとしたり、サイズが distributed_size を超えるのに既存の分散テーブルを更新しようとするとエラーが返されます。
log_size [ GB ]
正の数。 アプライアンス全体のトランザクション ログのサイズ (整数または 10 進数の GB)。
log_size の最小と最大の要件については、分析プラットフォーム システム (PDW) の製品ドキュメントの "最小値と最大値" を参照してください。
AUTOGROW が ON の場合、ログ ファイルはこの上限を超えて増加できます。 ログ ファイルのサイズを元のサイズまで減らすには、DBCC SHRINKLOG (Azure Synapse Analytics) ステートメントを使用します。
AUTOGROW が OFF の場合、個々の計算ノードで、ログ サイズが 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 ステートメントは、明示的なトランザクションでは使用できません。 詳細については、「ステートメント」を参照してください。
データベースの最小と最大の制約については、分析プラットフォーム システム (PDW) の製品ドキュメントの "最小値と最大値" を参照してください。
データベースを作成するときは、次のサイズの組み合わせ合計を割り当てるために、計算ノードごとに十分な空き領域が必要になります。
- テーブルのサイズが replicated_table_size の SQL Server データベース。
- テーブルのサイズが (distributed_table_size / 計算ノードの数) の SQL Server データベース。
- サイズが (log_size / 計算ノードの数) の SQL Server ログ。
ロック
DATABASE オブジェクトを共有ロックします。
Metadata
この操作が成功すると、このデータベースのエントリが sys.databases および sys.objects メタデータ ビューに表示されます。
例: Analytics Platform System (PDW)
A. 基本的データベース作成の例
次の例では、データベース mytest
を作成します。複製テーブルの記憶域割り当ては計算ノードごとに 100 GB、分散テーブルの記憶域割り当てはアプライアンスごとに 500 GB、トランザクション ログの記憶域割り当てはアプライアンスごとに 100 GB です。 この例では、AUTOGROW は既定の OFF です。
CREATE DATABASE mytest
WITH
(REPLICATED_SIZE = 100 GB,
DISTRIBUTED_SIZE = 500 GB,
LOG_SIZE = 100 GB );
次の例では上の例と同じパラメーターでデータベース mytest
を作成しますが、AUTOGROW を ON にします。 指定サイズ パラメーターを超えてデータベースは増加できます。
CREATE DATABASE mytest
WITH
(AUTOGROW = ON,
REPLICATED_SIZE = 100 GB,
DISTRIBUTED_SIZE = 500 GB,
LOG_SIZE = 100 GB);
B. 小数点以下を含む GB サイズでのデータベースの作成
次の例では、データベース mytest
を作成します。AUTOGROW は OFF です。複製テーブルの記憶域割り当ては計算ノードごとに 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);