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 Database Engine 物件 | SQL Server (64 位元) 的最大值 | 其他資訊 |
---|---|---|
批次大小 | 65,536 * (網路封包大小) | 網路封包大小是表格式資料流 (TDS) 封包的大小,這些封包用於關聯式資料庫引擎與應用程式之間的通訊。 預設的封包大小為 4 KB。 網路封包大小會控制此組態選項。 |
包含 Transact-SQL 陳述式的字串位元組長度 (批次大小) | 65,536 * (網路封包大小) | 網路封包大小是表格式資料流 (TDS) 封包的大小,這些封包用於關聯式資料庫引擎與應用程式之間的通訊。 預設封包大小是 4 KB,由 network packet size 組態選項所控制。 |
每個短字串資料行的位元組數 | 8,000 | |
每個 GROUP BY 、ORDER BY 的位元組數 |
8,060 | |
每個索引鍵的位元組數 | 叢集索引為 900 個位元組數。 非叢集索引為 1,700 個位元組。 若為 SQL Server 2014 (12.x) 及較舊版本,所有版本對於所有索引類型都支援 900 個位元組。 | 叢集索引鍵的最大位元組數不得超過 900。 非叢集索引鍵的最大位元組數為 1,700。 您可以使用大小上限增加超過限制的可變長度資料行,來定義索引鍵。 不過,這些資料行中的資料大小總和不得超過限制。 在非叢集索引中,您可以包含額外的非索引鍵資料行,這些資料行不會計入索引鍵的大小限制。 非索引鍵資料行可能有助於提升某些查詢的執行效能。 |
記憶體最佳化資料表之每個索引鍵的位元組數 | 非叢集索引為 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 | 如果資料表包含一或多個 XML 索引,則使用者資料表的叢集索引鍵限制為 31 個資料行,因為 XML 資料行會加入主要 XML 索引的叢集索引鍵中。 您可在非叢集索引中包含非索引鍵資料行,以避免達到最多 32 個索引鍵資料行的限制。 如需詳細資訊,請參閱 建立內含資料行的索引。 |
每個外部索引鍵或主索引鍵的資料行數 | 32 | |
每個 INSERT 陳述式的資料行數 |
4,096 | |
每個 SELECT 陳述式的資料行數 |
4,096 | |
資料表的資料行數 | 1,024 | 包含疏鬆資料行集的資料表最多含有 30,000 個資料行。 請參閱疏鬆資料行集合。 |
每個 UPDATE 陳述式的資料行數 |
4,096 | 適用於疏鬆資料行集合的不同限制。 |
每個檢視的資料行數 | 1,024 | |
每個用戶端的連接數目 | 已設定之連接的最大值 | |
資料庫大小 | 524,272 TB | |
每個 SQL Server 執行個體的資料庫數目 | 32,767 | |
每個資料庫的檔案群組數 | 32,767 | |
記憶體最佳化資料的每個資料庫檔案群組 | 1 | |
每個資料庫的檔案數 | 32,767 | |
檔案大小 (資料) | 16 TB | |
檔案大小 (記錄檔) | 2 TB | |
每個資料庫之記憶體最佳化資料的資料檔案 | 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 | 如果預存程序存取超過 64 個資料庫或以交錯方式存取超過兩個資料庫,則會收到錯誤。 |
巢狀子查詢 | 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 | |
每份資料表的資料列數 | 受限於可用的儲存體 | |
每個資料庫的資料表數 | 受限於資料庫中的總物件數 | 物件包含資料表、檢視、預存程序、使用者定義函式、觸發程序、規則、預設和條件約束等物件。 資料庫中所有物件數的總和不得超過 2,147,483,647。 |
每份分割區資料表或索引的分割區數 | 15,000 | |
非索引資料行的統計資料 | 30,000 | |
每個 SELECT 陳述式的資料表數 |
僅受限於可用的資源 | |
每份資料表的觸發程序數 | 受限於資料庫的物件數 | 物件包含資料表、檢視、預存程序、使用者定義函式、觸發程序、規則、預設和條件約束等物件。 資料庫中所有物件數的總和不得超過 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 Replication 物件 | 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 |