SQL Server の最大容量仕様

適用対象:SQL Server

この記事では、SQL Server 2016 (13.x) 以降で定義される各種オブジェクトの最大サイズと最大数を示します。 エディションの制限を表示する場合は、「SQL Server のエディション別の計算容量制限」を参照してください。

SQL Server 2014 (12.x) については、SQL Server 2014 の最大容量仕様に関するページを参照してください。

データベース エンジン オブジェクト

SQL Server データベースで定義される各種オブジェクト、または Transact-SQL ステートメントで参照される各種オブジェクトの最大値。

SQL Server データベース エンジン オブジェクト SQL Server (64 ビット) の最大値 追加情報
バッチ サイズ 65,536 * (ネットワーク パケットのサイズ) ネットワーク パケット サイズとは、リレーショナル データベース エンジンとアプリケーションの間の通信に使用される表形式データ ストリーム (TDS) パケットのサイズです。 既定のパケット サイズは 4KB です。 ネットワーク パケット サイズにより、この構成オプションは制御されます。
Transact-SQL ステートメントが含まれた文字列のバイト長 (バッチ サイズ) 65,536 * (ネットワーク パケットのサイズ) ネットワーク パケット サイズとは、リレーショナル データベース エンジンとアプリケーションの間の通信に使用される表形式データ ストリーム (TDS) パケットのサイズです。 既定のパケット サイズは 4 KB であり、network packet size 構成オプションによって制御されます。
通常の string 列ごとのバイト数 8,000
GROUP BYORDER BY ごとのバイト数 8,060
インデックス キーごとのバイト数 1 つのクラスター化インデックスにつき 900 バイト。 1 つの非クラスター化インデックスにつき 1,700 バイト。 SQL Server 2014 (12.x) 以前は、すべてのバージョンで、すべてのインデックスの種類に対して 900 バイトがサポートされていました。 クラスター化インデックス キーの最大バイト数を 900 以下にする必要があります。 非クラスター化インデックス キーの場合は、最大 1,700 バイト。

最大サイズを合計すると制限を超える可変長列を使用して、キーを定義できます。 ただし、これらの列のデータのサイズ合計が、制限を超えることはできません。

非クラスター化インデックスには、追加の非キー列を含めることができ、それらはキーのサイズ制限にはカウントされません。 非キー列は、一部のクエリ パフォーマンスの向上に役立つ場合があります。
メモリ最適化テーブルのインデックス キーごとのバイト数 1 つの非クラスター化インデックスにつき 2,500 バイト。 すべてのインデックス キーが行内に収まる限り、ハッシュ インデックスに制限はなし。 メモリ最適化テーブルでは、非クラスター化インデックスは、宣言された最大サイズが 2,500 バイトを超えるキー列を持つことはできません。 キー列の実際のデータが、宣言されている最大サイズよりも小さいかどうかには関係ありません。

ハッシュ インデックス キーの場合、サイズにハード リミットはありません。

メモリ最適化テーブルのインデックスの場合、すべてのインデックスがすべての列を本質的にカバーするため、付加列の概念はありません。

メモリ最適化テーブルの場合、行のサイズが 8,060 バイトでも、一部の可変長列をこの 8,060 バイトの外側に物理的に保存できます。 ただし、テーブルのすべてのインデックスのすべてのキー列の宣言された最大サイズと、テーブル内の追加の固定長列のすべてが、8,060 バイトに収まる必要があります。
外部キーごとのバイト数 900
主キーごとのバイト数 900
行ごとのバイト数 8,060 SQL Server 行オーバーフロー ストレージがサポートされています。これにより、可変長列の行外への移動が可能になります。 行外に押し出された可変長列については、メイン レコードに 24 バイトのルートだけが格納されます。 詳細については、大量の行のサポートに関する記事を参照してください。
メモリ最適化テーブル内の行ごとのバイト数 8,060 SQL Server 2016 (13.x) 以降のメモリ最適化テーブルでは、行外ストレージがサポートされます。 テーブル内のすべての列の最大サイズが 8,060 バイトを超える場合、可変長列が行外に押し出されます。このアクションはコンパイル時の決定です。 行外に保存された列用に、8 バイトの参照だけが行内に保存されます。 詳細については、「 メモリ最適化テーブルのテーブルと行のサイズ」を参照してください。
ストアド プロシージャのソース テキスト内のバイト数 バッチ サイズまたは 250 MB のいずれか小さい方
varchar(max)varbinary(max)xmltext、または image 列ごとのバイト数 2^31-1
ntext または nvarchar(max) 列ごとの文字数 2^30-1
テーブルごとのクラスター化インデックス数 1
GROUP BYORDER BY の列 バイト数のみによって制限されます。
GROUP BY WITH CUBE または GROUP BY WITH ROLLUP ステートメント内の列または式 10
インデックス キーごとの列数 32 テーブルに 1 つ以上の XML インデックスが含まれている場合は、XML 列がプライマリ XML インデックスのクラスター化キーに追加されるため、ユーザー テーブルのクラスター化キーが 31 列までに制限されます。 キー列数が最大キー列数制限の 32 を越えないように、非クラスター化インデックスに非キー列を含めることができます。 詳細については、「 付加列インデックスの作成」を参照してください。
外部キーまたは主キーごとの列数 32
INSERT ステートメントごとの列数 4,096
SELECT ステートメントごとの列数 4,096
テーブルごとの列数 1,024 スパース列セットを含むテーブルには、最大 30,000 列が含まれます。 「スパース列セット」を参照してください。
UPDATE ステートメントごとの列数 4,096 スパース列セットには、異なる制限が適用されます。
ビューごとの列数 1,024
クライアントごとの接続数 構成した接続の最大値
データベース サイズ 524,272 テラバイト
インスタンスごとのデータベース数 SQL Server 32,767
データベースごとのファイル グループ数 32,767
メモリ最適化データに対応する、データベースごとのファイル グループ 1
データベースごとのファイル数 32,767
ファイル サイズ (データ) 16 テラバイト
ファイル サイズ (ログ) 2 テラバイト
データベースごとのメモリ最適化データに対応するデータ ファイル SQL Server 2014 (12.x) では 4,096。 この制限は、SQL Server 2016 (13.x) 以降では厳密ではありません。
メモリ最適化データに対応するデータ ファイルごとのデルタ ファイル 1
テーブルごとの外部キー テーブル参照数 発信 = 253。
着信 = 10,000。
制限については、「 Create Foreign Key Relationships」を参照してください。
識別子長 (文字数) 128
コンピューターごとのインスタンス数 スタンドアロン サーバー上に 50 個のインスタンス。

ストレージとして共有クラスター ドライブを使用する場合は、25 個のフェールオーバー クラスター インスタンス。

ストレージ オプションとして SMB ファイル共有を使用する場合は、50 個のフェールオーバー クラスター インスタンス。
メモリ最適化テーブルごとのインデックス SQL Server 2017 (14.x) 以降および Azure SQL Database では 999。

SQL Server 2016 (13.x) および SQL Server 2014 (12.x) では 8。
接続ごとのロック数 サーバーごとの最大ロック数
のインスタンスごとのロック数 SQL Server メモリのみによって制限されます。 これは静的ロック割り当てに対する値です。 動的ロックの場合は、メモリのみによって制限されます。
ストアド プロシージャの入れ子レベル数 32 ストアド プロシージャが 65 個以上のデータベースにアクセスするか、またはインターリーブ時に 3 つ以上のデータベースにアクセスすると、エラーが返されます。
入れ子にしたサブクエリの数 32
入れ子構造のトランザクション 4,294,967,296
トリガーの入れ子レベル数 32
テーブルごとの非クラスター化インデックス数 999
次のいずれかが存在する場合の、GROUP BY 句に含まれる個別の式の数: CUBEROLLUPGROUPING SETSWITH CUBEWITH ROLLUP 32
GROUP BY 句内の演算子によって生成されるグループ化セットの数 4,096
ストアド プロシージャごとのパラメーター数 2,100
ユーザー定義関数ごとのパラメーター数 2,100
テーブルごとの参照数 253
テーブルごとの行数 使用可能な記憶領域によって制限されます。
データベースごとのテーブル数 データベース内のオブジェクトの合計数によって制限されます。 オブジェクトには、テーブル、ビュー、ストアド プロシージャ、ユーザー定義関数、トリガー、ルール、デフォルト、および制約が含まれます。 1 つのデータベース内のオブジェクトの合計数は 2,147,483,647 以下にする必要があります。
パーティション テーブルまたはインデックスごとのパーティション数 15,000
インデックス付けされていない列の統計 30,000
SELECT ステートメントごとのテーブル数 使用可能なリソースのみによって制限されます。
テーブルごとのトリガー数 データベース内のオブジェクト数によって制限されます。 オブジェクトには、テーブル、ビュー、ストアド プロシージャ、ユーザー定義関数、トリガー、ルール、デフォルト、および制約が含まれます。 1 つのデータベース内のオブジェクトの合計数は 2,147,483,647 以下にする必要があります。
ユーザー接続数 32,767
XML インデックス数 249

SQL Server データ層アプリケーション オブジェクト

SQL Server データ層アプリケーション (DAC) でテストされた各種オブジェクトの最大値。

SQL Server DAC オブジェクト SQL Server (64 ビット) の最大値 関連情報
DAC ごとのデータベース数 1
DAC ごとのオブジェクト数 データベース内のオブジェクト数または使用可能なメモリによって制限されます。 制限の対象となるオブジェクトの種類は、ユーザー、テーブル、ビュー、ストアド プロシージャ、ユーザー定義関数、ユーザー定義データ型、データベース ロール、スキーマ、ユーザー定義テーブル型です。

レプリケーション オブジェクト

SQL Server レプリケーションで定義される各種オブジェクトの最大値。

SQL Server レプリケーション オブジェクト SQL Server の最小値
(64 ビット)
関連情報
アーティクル数 (マージ パブリケーション) 2,048
アーティクル数 (スナップショットまたはトランザクション パブリケーション) 32,767
テーブル内の列数 (マージ パブリケーション) 246 競合検出 (規定) 用に行の追跡を使用する場合、ベース テーブルには最大 1,024 列を含めることができます。 ただし、パブリケーションでは、最大 246 列が発行されるように記事をフィルター処理する必要があります。 列の追跡を使用する場合、ベース テーブルには最大 246 列を含めることができます。
テーブル内の列数 (SQL Server のスナップショットまたはトランザクション パブリケーション) 1,000 ベース テーブルには、SQL Server パブリケーション データベースで許容される最大数 (1,024) の列を含めることができますが、列数がパブリケーション タイプに対して指定された最大数を超える場合は、アーティクルから列をフィルター選択する必要があります。
テーブル内の列数 (Oracle のスナップショットまたはトランザクション パブリケーション) 995 ベース テーブルには、SQL Server パブリケーション データベースで許容される最大数 (1,024) の列を含めることができますが、列数がパブリケーション タイプに対して指定された最大数を超える場合は、アーティクルから列をフィルター選択する必要があります。
行フィルターで使用される列のバイト数 (マージ パブリケーション) 1,024
行フィルターで使用される列のバイト数 (スナップショットまたはトランザクション パブリケーション) 8,000

関連項目