SQL Server 的最大容量規格
下表指定 SQL Server 元件中已定義之各種物件的大小和數目上限。
Database Engine 物件
下表指定 SQL Server 資料庫中已定義或 Transact-SQL 陳述式中所參考之各種物件的大小和數目上限。
SQL Server Database Engine 物件 |
SQL Server 大小/數目上限 (32 位元) |
SQL Server 大小/數目上限 (64 位元) |
---|---|---|
批次大小1 |
65,536 * 網路封包大小 |
65,536 * 網路封包大小 |
每個短字串資料行的位元組數 |
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 TB |
524,272 TB |
每個 SQL Server 執行個體的資料庫數目 |
32,767 |
32,767 |
每個資料庫的檔案群組數 |
32,767 |
32,767 |
每個資料庫的檔案數 |
32,767 |
32,767 |
檔案大小 (資料) |
16 TB |
16 TB |
檔案大小 (記錄檔) |
2 TB |
2 TB |
每個資料表的外部索引鍵資料表參考數4 |
253 |
253 |
識別碼長度 (字元數) |
128 |
128 |
每部電腦的執行個體數 |
所有的 SQL Server 版本 (Workgroup 除外) 在獨立伺服器上可支援 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 |
每份資料表的 REFERENCES |
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) 封包的大小,用於應用程式與關聯式 Database Engine 之間的通訊。預設封包大小是 4 KB,由 network packet size 組態選項所控制。
2 在 SQL Server 中,任何索引鍵的最大位元組數不得超過 900。假設這些資料行內從未插入超過 900 位元組的資料,則您可使用大小上限累加超過 900 的可變長度資料行定義索引鍵。在 SQL Server 中,您可以在非叢集索引中包含非索引鍵資料行,以避免達到最大索引鍵大小 900 個位元組。
3 資料庫物件包含像資料表、檢視、預存程序、使用者定義函數、觸發程序、規則、預設值和條件約束等物件。資料庫中所有物件數的總和不得超過 2,147,483,647。
4雖然資料表可包含無限數目的 FOREIGN KEY 條件約束,但是建議的最大值為 253。根據主控 SQL Server 的硬體組態而定,指定額外的 FOREIGN KEY 條件約束對於查詢最佳化工具的處理可能會耗費極大成本。
5 這個值是針對靜態鎖定配置。動態鎖定僅受限於記憶體。
6 如果預存程序存取超過 8 個資料庫或以交錯方式超過 2 個資料庫,您會收到錯誤訊息。
7 如果資料表包含一或多個 XML 索引,則使用者資料表的叢集索引鍵限制為 15 個資料行,因為 XML 資料行會加入至主要 XML 索引的叢集索引鍵中。在 SQL Server 中,您可以在非叢集索引中包含非索引鍵資料行,以避免達到最多 16 個索引鍵資料行的限制。如需詳細資訊,請參閱<具有內含資料行的索引>。
8SQL Server 支援資料列溢位儲存體,好讓可變長度的資料行從資料列發送。只有 24 位元組的根會儲存在從資料列發送之可變長度資料行的主要記錄中;因此,有效資料列限制高於舊版 SQL Server。如需詳細資訊,請參閱《SQL Server 線上叢書》中的<超過 8 KB 的資料列溢位資料>主題。
複寫物件
下表指定 SQL Server Replication 中已定義之各種物件的大小和數目上限。
SQL Server Replication 物件 |
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 個),但如果資料行超出對發行集類型指定的最大值,則必須篩選發行項的資料行。