以下各表指定 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 个键列的限制。有关详细信息,请参阅具有包含列的索引。
8, SQL 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),但如果这些列的数目超过为发布类型指定的最大值,则必须从项目中筛选这些列。