SQL Server の最大容量仕様
次の各表に、SQL Server コンポーネントで定義される各種オブジェクトの最大サイズと最大数を示します。
データベース エンジンのオブジェクト
次の表に、SQL Server データベースで定義されたり Transact-SQL ステートメントで参照される各種オブジェクトの最大サイズと最大数を示します。
SQL Server データベース エンジンのオブジェクト |
最大サイズ/最大数 SQL Server (32 ビット) |
最大サイズ/最大数 SQL Server (64 ビット) |
---|---|---|
バッチ サイズ1 |
65,536 * ネットワーク パケット サイズ |
65,536 * ネットワーク パケット サイズ |
通常の string 列ごとのバイト数 |
8,000 |
8,000 |
GROUP BY、ORDER BY ごとのバイト数 |
8,060 |
8,060 |
インデックス キーごとのバイト数2 |
900 |
900 |
外部キーごとのバイト数 |
900 |
900 |
主キーごとのバイト数 |
900 |
900 |
行ごとのバイト数8 |
8,060 |
8,060 |
ストアド プロシージャのソース テキスト内のバイト数 |
バッチ サイズまたは 250 MB のいずれか小さい方 |
バッチ サイズまたは 250 MB のいずれか小さい方 |
varchar(max)、varbinary(max)、xml、text、または image 列ごとのバイト数 |
2^31-1 |
2^31-1 |
ntext または nvarchar(max) 列ごとの文字数 |
2^30-1 |
2^30-1 |
テーブルごとのクラスタ化インデックス数 |
1 |
1 |
GROUP BY、ORDER BY の列数 |
バイト数のみによって制限されます。 |
バイト数のみによって制限されます。 |
GROUP BY WITH CUBE または WITH ROLLUP ステートメント内の列または式の数 |
10 |
10 |
インデックス キーごとの列数7 |
16 |
16 |
外部キーごとの列数 |
16 |
16 |
主キーごとの列数 |
16 |
16 |
幅の狭いテーブルごとの列数 |
1,024 |
1,024 |
幅の広いテーブルごとの列数 |
30,000 |
30,000 |
SELECT ステートメントごとの列数 |
4,096 |
4,096 |
INSERT ステートメントごとの列数 |
4096 |
4096 |
クライアントごとの接続数 |
構成した接続の最大値 |
構成した接続の最大値 |
データベース サイズ |
524,272 テラバイト |
524,272 テラバイト |
SQL Server ごとのデータベース数 |
32,767 |
32,767 |
データベースごとのファイル グループ数 |
32,767 |
32,767 |
データベースごとのファイル数 |
32,767 |
32,767 |
ファイル サイズ (データ) |
16 テラバイト |
16 テラバイト |
ファイル サイズ (ログ) |
2 テラバイト |
2 テラバイト |
テーブルごとの外部キー テーブル参照数4 |
253 |
253 |
識別子長 (文字数) |
128 |
128 |
コンピュータごとのインスタンス数 |
Workgroup を除くすべての SQL Server エディションでは、スタンドアロン サーバー上に 50 個のインスタンス。Workgroup では、コンピュータあたり最大 16 個のインスタンスがサポートされます。 SQL Server では、フェールオーバー クラスタ上に 25 個のインスタンスがサポートされます。 |
スタンドアロン サーバー上に 50 個のインスタンス フェールオーバー クラスタ上に 25 個のインスタンス |
SQL ステートメントが含まれた文字列の長さ (バッチ サイズ)1 |
65,536 * ネットワーク パケット サイズ |
65,536 * ネットワーク パケット サイズ |
接続ごとのロック数 |
サーバーごとの最大ロック数 |
サーバーごとの最大ロック数 |
SQL Server インスタンスごとのロック数5 |
最大 2,147,483,647 |
メモリのみによって制限されます。 |
ストアド プロシージャの入れ子レベル数6 |
32 |
32 |
入れ子にしたサブクエリの数 |
32 |
32 |
トリガの入れ子レベル数 |
32 |
32 |
テーブルごとの非クラスタ化インデックス数 |
999 |
999 |
GROUP BY 句に含まれる個別の式の数 (CUBE、ROLLUP、GROUPING SETS、WITH CUBE、または WITH ROLLUP のいずれかが存在する場合) |
32 |
32 |
GROUP BY 句内の演算子によって生成されるグループ化セットの数 |
4,096 |
4,096 |
ストアド プロシージャごとのパラメータ数 |
2,100 |
2,100 |
ユーザー定義関数ごとのパラメータ数 |
2,100 |
2,100 |
テーブルごとの参照数 |
253 |
253 |
テーブルごとの行数 |
使用可能な記憶領域によって制限されます。 |
使用可能な記憶領域によって制限されます。 |
データベースごとのテーブル数3 |
データベース内のオブジェクト数によって制限されます。 |
データベース内のオブジェクト数によって制限されます。 |
パーティション テーブルまたはインデックスごとのパーティション数 |
1,000 |
1,000 |
インデックス付けされていない列の統計 |
30,000 |
30,000 |
SELECT ステートメントごとのテーブル数 |
使用可能なリソースのみによって制限されます。 |
使用可能なリソースのみによって制限されます。 |
テーブルごとのトリガ数3 |
データベース内のオブジェクト数によって制限されます。 |
データベース内のオブジェクト数によって制限されます。 |
UPDATE ステートメント (幅の広いテーブル) ごとの列数 |
4096 |
4096 |
ユーザー接続数 |
32,767 |
32,767 |
XML インデックス |
249 |
249 |
1 ネットワーク パケット サイズとは、アプリケーションとリレーショナル データベース エンジンの間の通信に使用される表形式のデータ ストリーム (TDS) パケットのサイズです。既定のパケット サイズは 4 KB であり、network packet size 構成オプションによって制御されます。
2SQL Server では、インデックス キーの最大バイト数を 900 以下にする必要があります。最大サイズの合計が 900 を超えるような組み合わせで複数の可変長列を使用してキーを定義することは可能ですが、これらの列のデータが 900 バイトを超えるような行が挿入されないことが条件です。SQL Server では、インデックス キーが最大サイズ制限の 900 バイトを超えないように、非クラスタ化インデックスに非キー列を含めることができます。
3 データベース オブジェクトには、テーブル、ビュー、ストアド プロシージャ、ユーザー定義関数、トリガ、デフォルト、制約などのオブジェクトが含まれます。1 つのデータベース内のオブジェクトの合計数は 2,147,483,647 以下にする必要があります。
4 1 つのテーブルには FOREIGN KEY 制約を無制限に含めることができますが、推奨最大数は 253 です。SQL Server をホストするハードウェア構成によっては、追加の FOREIGN KEY 制約を指定するとクエリ オプティマイザの処理が遅くなる可能性があります。
5 これは静的ロック割り当てに対する値です。動的ロックの場合は、メモリのみによって制限されます。
6 ストアド プロシージャが 9 つ以上のデータベースにアクセスするか、またはインターリーブ時に 3 つ以上のデータベースにアクセスすると、エラーが返されます。
7 テーブルに 1 つ以上の XML インデックスが含まれている場合は、XML 列がプライマリ XML インデックスのクラスタ化キーに追加されるため、ユーザー テーブルのクラスタ化キーが 15 列までに制限されます。SQL Server では、キー列数が最大キー列数制限の 16 を越えないように、非クラスタ化インデックスに非キー列を含めることができます。詳細については、「付加列インデックス」を参照してください。
8SQL Server では、行オーバーフロー ストレージがサポートされています。これにより、可変長列の行外への移動が可能になります。行外に移動される可変長列のうち、ルートの 24 バイトだけが本体のレコードに格納されます。これにより、実際の行制限は、以前のリリースの SQL Server よりも大きい値になります。詳細については、SQL Server オンライン ブックの「8 KB を超える場合の行オーバーフロー データ」を参照してください。
レプリケーション オブジェクト
次の表に、SQL Server レプリケーションで定義される各種オブジェクトの最大サイズと最大数を示します。
SQL Server レプリケーション オブジェクト |
最大サイズ/最大数 SQL Server (32 ビット) |
最大サイズ/最大数 SQL Server (64 ビット) |
---|---|---|
アーティクル数 (マージ パブリケーション) |
256 |
256 |
アーティクル数 (スナップショットまたはトランザクション パブリケーション) |
32,767 |
32,767 |
テーブル内の列数1 (マージ パブリケーション) |
246 |
246 |
テーブル内の列数2 (SQL Server のスナップショットまたはトランザクション パブリケーション) |
1,000 |
1,000 |
テーブル内の列数2 (Oracle のスナップショットまたはトランザクション パブリケーション) |
995 |
995 |
行フィルタで使用される列のバイト数 (マージ パブリケーション) |
1,024 |
1,024 |
行フィルタで使用される列のバイト数 (スナップショットまたはトランザクション パブリケーション) |
8,000 |
8,000 |
1 競合の検出で行の追跡を使用する場合 (既定)、ベース テーブルには最大 1,024 列を含めることができます。ただし、最大で 246 列がパブリッシュされるように、列をアーティクルからフィルタ処理する必要があります。列の追跡を使用する場合、ベース テーブルには最大 246 列を含めることができます。追跡レベルの詳細については、「マージ レプリケーションで競合を検出および解決する方法」の「追跡レベル」を参照してください。
2 ベース テーブルには、パブリケーション データベースで許容される最大数 (SQL Server の場合は 1,024) の列を含めることができますが、列数がパブリケーション タイプに対して指定された最大数を超える場合は、アーティクルから列をフィルタ処理する必要があります。