適用対象: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 BY、ORDER 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)、xml、text、または image 列ごとのバイト数 |
2^31-1 | |
ntext または nvarchar(max) 列ごとの文字数 |
2^30-1 | |
| テーブルごとのクラスター化インデックス数 | 1 | |
GROUP BY、ORDER 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。 |
制限については、「 外部キー リレーションシップの作成」を参照してください。 |
| 識別子長 (文字数) | 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 句に含まれる個別の式の数: CUBE、ROLLUP、GROUPING SETS、WITH CUBE、WITH ROLLUP |
32 | |
GROUP BY 句内の演算子によって生成されるグループ化セットの数 |
4,096 | |
| ストアド プロシージャごとのパラメーター数 | 2,100 | |
| ユーザー定義関数ごとのパラメーター数 | 2,100 | |
REFERENCES テーブルごと |
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 |