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) の列を含めることができますが、列数がパブリケーション タイプに対して指定された最大数を超える場合は、アーティクルから列をフィルタ処理する必要があります。