SQL Server 的最大容量规范

以下各表指定 SQL Server 组件中定义的各种对象的最大大小和最大数量。

数据库引擎对象

下表指定在 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 版本(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

每个数据表的 REFERENCE 个数

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) 数据包的大小。默认的数据包大小为 4 KB,由“网络数据包大小”配置选项控制。

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 索引,由于 XML 列被添加到主 XML 索引的聚集键,用户表的聚集键被限制为 15 列。在 SQL Server 中,可在非聚集索引中包括非键列以避免最多为 16 个键列的限制。有关详细信息,请参阅具有包含列的索引

8SQL Server 支持行溢出存储,行溢出存储使长度可变的列可以被推送到行外。只有 24 字节的根存储在推送出行外的可变长度列的主记录中;因此,此版本中的有效行限制高于 SQL Server 早期版本中的有效行限制。有关详细信息,请参阅 SQL Server 联机丛书中的“行溢出数据超过 8 KB”主题。

复制对象

下表指定了 SQL Server 复制中定义的各种对象的最大大小和最大数量。

SQL Server 复制对象

最大大小/数量 - 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 中为 1024),但如果这些列的数目超过为发布类型指定的最大值,则必须从项目中筛选这些列。