看到論壇裡很多人問道關於SQL Server能夠支援最多多少個資料庫,多少個執行個體,多少張表,每個表最多多少個欄位等等的問題。 在MSDN上有一篇文章專門介紹了SQL Server的容量規範,其中包括了SQL Server資料庫引擎對象SQL
Server工具 + 生產力對象
SQL Server 資料層應用程式對象SQL Server複製對象。明白了SQL
Server的限制可以避免一些錯誤,比如SQL Server索引鍵的列數為16,超過16的話就無法建立索引。
這裡我只列出SQL Server 資料庫中定義的或在 Transact-SQL 陳述式中引用的各種對象的最大大小和最大數量,其他的大家可以參考上面的連結。
SQL Server 資料庫引擎對象 |
最大大小/數量 - 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 版本的獨立伺服器上為 50 個執行個體。 在使用共用群集磁碟作為您的群集安裝的儲存選項時,SQL Server 在容錯移轉叢集上支援 25 個執行個體。如果您為群集安裝選擇 SMB 檔案分享權限設定作為儲存選項,則在 SQL Server 容錯移轉叢集上支援 50 個執行個體。有關詳細資料,請參閱資料檔案的儲存類型。 |
獨立伺服器上為 50 個執行個體。 在使用共用群集磁碟作為您的群集安裝的儲存選項時,在容錯移轉叢集上支援 25 個執行個體。如果您為群集安裝選擇 SMB 檔案分享權限設定作為儲存選項,則 SQL Server 在容錯移轉叢集上支援 50 個執行個體。有關詳細資料,請參閱資料檔案的儲存類型。 |
包含 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 |
每個資料表的 REFERENCE 個數 |
253 |
253 |
每個資料表的行數 |
受可用儲存空間限制 |
受可用儲存空間限制 |
每個資料庫的表數3 |
受資料庫中對象數限制 |
受資料庫中對象數限制 |
每個分區表或索引的分區數 |
1,000
重要提示 |
在 32 位系統上可以建立具有超過 1,000 個分區的表或索引,但不支援這樣做。 |
|
15,000 |
非索引列的統計資訊條數 |
30,000 |
30,000 |
每個 SELECT 語句的表個數 |
僅受可用資源限制 |
僅受可用資源限制 |
每個表的觸發器個數3 |
受資料庫中對象數限制 |
受資料庫中對象數限制 |
每個 UPDATE 語句(寬表)的列數 |
4096 |
4096 |
使用者串連 |
32,767 |
32,767 |
XML 索引 |
249 |
249 |