SQL Server 的最大容量规范

以下各表指定 SQL Server 组件中定义的各种对象的最大大小和最大数量。 若要导航到 SQL Server 技术的对应表,请单击其链接:

SQL Server 数据库引擎对象

SQL Server 实用工具对象

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 版本的独立服务器上为 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

1网络数据包大小指的是用于在应用程序和关系数据库引擎之间进行通信的表格格式数据流 (TDS) 数据包的大小。 默认的数据包大小为 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如果存储过程访问的数据库多于 64 个,或者交替访问的数据库多于 2 个,将收到错误信息。

7如果表包含一个或多个 XML 索引,由于 XML 列被添加到主 XML 索引的聚集键,用户表的聚集键被限制为 15 列。 在 SQL Server 中,可在非聚集索引中包括非键列以避免最多为 16 个键列的限制。 有关详细信息,请参阅创建带有包含列的索引

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

SQL Server 实用工具对象

下表指定了在 SQL Server 实用工具中测试的各种对象的最大大小和最大数量。

SQL Server 实用工具对象

最大大小/数量 - SQL Server(32 位)

最大大小/数量 - SQL Server(64 位)

每个 SQL Server 实用工具的计算机数(物理计算机或虚拟计算机)

100

100

每台计算机的 SQL Server 实例数

5

5

每个 SQL Server 实用工具的 SQL Server 实例总数

2001

2001

每个 SQL Server 实例的用户数据库数(包括数据层应用程序)

50

50

每个 SQL Server 实用工具的用户数据库总数

1,000

1,000

每个数据库的文件组数

1

1

每个文件组的数据文件数

1

1

每个数据库的日志文件数

1

1

每台计算机的卷数

3

3

1 SQL Server 实用工具支持的 SQL Server 托管实例的最大数目将会依服务器的硬件配置而定。 有关入门信息,请参阅 SQL Server 实用工具的功能和任务。 并非在每个 SQL Server 2012 版本中均提供 SQL Server 实用工具控制点。 有关 SQL Server 各版本支持的功能列表,请参阅 SQL Server 2012 各个版本支持的功能 (https://go.microsoft.com/fwlink/?linkid=232473)。

SQL Server 数据层应用程序对象

下表指定了在 SQL Server 数据层应用程序 (DAC) 中测试的各种对象的最大大小和最大数量。

SQL Server DAC 对象

最大大小/数量 - SQL Server(32 位)

最大大小/数量 - SQL Server(64 位)

每个 DAC 的数据库数

1

1

每个 DAC 的对象数1

受数据库中对象数或可用内存限制。

受数据库中对象数或可用内存限制。

1限制中包含的对象类型为用户、表、视图、存储过程、用户定义函数、用户定义数据类型、数据库角色、架构和用户定义表类型。

复制对象

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

请参阅

参考

安装 SQL Server 2012 的硬件和软件要求

系统配置检查器的检查参数

概念

SQL Server 实用工具的功能和任务