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 数据库引擎 对象

SQL Server (64 位) 的最大值

其他信息

批大小

65,536 *(网络数据包大小)

网络数据包大小指的是用于在关系数据库引擎和应用程序之间进行通信的表格格式数据流 (TDS) 数据包的大小。 默认的数据包大小为 4 KB,由“网络数据包大小”配置选项控制。

包含 Transact-SQL 语句的字符串的长度(字节)

65,536 *(网络数据包大小)

网络数据包大小指的是用于在关系数据库引擎和应用程序之间进行通信的表格格式数据流 (TDS) 数据包的大小。 默认的数据包大小为 4 KB,由“网络数据包大小”配置选项控制。

每个短字符串列的字节数

8,000

GROUP BYORDER 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)xmltextimage 列的字节数

2^31-1

每个 ntextnvarchar(max) 列的字符数

2^30-1

每个表的聚集索引数

1

GROUP BYORDER BY 中的列

仅受字节数限制

GROUP BY WITH CUBEGROUP BY WITH ROLLUP 语句中的列或表达式

10

每个索引键的列数

32

如果表包含一个或多个 XML 索引,由于 XML 列被添加到主 XML 索引的聚集键,因此用户表的聚集键被限制为 31 列。 在 SQL Server 中,可在非聚集索引中包括非键列以避免最多为 32 个键列的限制。 有关详细信息,请参阅 Create Indexes with Included Columns

每个外键或主键的列数

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 数据库中,该值为 999。

在 SQL Server 2016 (13.x) 和 SQL Server 2014 (12.x) 中,该值为 8。

每个连接的锁数

每个服务器的最大锁数

每个 SQL Server

仅受内存限制

此值针对静态锁分配。 动态锁仅受内存限制。

嵌套存储过程级别数

32

如果存储过程访问的数据库多于 64 个,或者交替访问的数据库多于 2 个,将收到错误信息。

嵌套子查询个数

32

嵌套事务

4,294,967,296

嵌套触发器层数

32

每个表的非聚集索引数

999

当存在以下任意子句时,GROUP BY 子句中的非重复表达式数:CUBEROLLUPGROUPING SETSWITH CUBEWITH ROLLUP

32

GROUP BY 子句中的运算符生成的分组集数目

4,096

每个存储过程的参数个数

2,100

每个用户定义函数的参数个数

2,100

每个数据表的 REFERENCE 个数

253

每个数据表的行数

受可用存储空间限制

每个数据库的表数

受数据库中对象总数限制

对象包括表、视图、存储过程、用户定义函数、触发器、规则、默认值和约束。 数据库中所有对象的数量总和不能超过 2,147,483,647。

每个分区表或索引的分区数

15,000

非索引列的统计信息条数

30,000

每个 SELECT 语句的表数目

仅受可用资源限制

每个表的触发器数

受数据库中对象数限制

对象包括表、视图、存储过程、用户定义函数、触发器、规则、默认值和约束。 数据库中所有对象的数量总和不能超过 2,147,483,647。

用户连接

32,767

XML 索引

249

SQL Server 实用工具对象

在 SQL Server 实用工具中测试的各种对象的最大值。

SQL Server 实用工具对象

SQL Server (64 位) 的最大值

其他信息

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

100

每台计算机的 SQL Server 实例数

5

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

200

最大数值可能会因服务器的硬件配置而有所不同。 有关入门信息,请参阅 SQL Server 实用工具功能和任务。 并不是所有版本的 SQL Server 都提供 SQL Server 实用工具控制点。 你可以阅读了解所有版本的 SQL Server 2019SQL Server 2017SQL Server 2016 支持的功能。

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

50

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

1,000

每个数据库的文件组数

1

每个文件组的数据文件数

1

每个数据库的日志文件数

1

每台计算机的卷数

3

SQL Server 数据层应用程序对象

在 SQL Server 数据层应用程序 (DAC) 中测试的各种对象的最大值。

SQL Server DAC 对象

SQL Server (64 位) 的最大值

其他信息

每个 DAC 的数据库数

1

每个 DAC 的对象数目

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

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

复制对象

在 SQL Server 复制中定义的各种对象的最大值。

SQL Server 复制对象

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

另请参阅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值