Maximum Capacity Specifications for SQL Server 2005
The following tables specify the maximum sizes and numbers of various objects defined in Microsoft SQL Server 2005 components.
Database Engine Objects
The following table specifies the maximum sizes and numbers of various objects defined in SQL Server 2005 databases or referenced in Transact-SQL statements. The table does not include SQL Server Windows CE Edition.
SQL Server 2005 Database Engine object | Maximum sizes/numbers SQL Server 2005 (32-bit) | Maximum sizes/numbers SQL Server 2005 (64-bit) |
Batch size1 | 65,536 * Network Packet Size | 65,536 * Network Packet Size |
Bytes per short string column | 8,000 | 8,000 |
Bytes per GROUP BY, ORDER BY | 8,060 | 8,060 |
Bytes per index key2 | 900 | 900 |
Bytes per foreign key | 900 | 900 |
Bytes per primary key | 900 | 900 |
Bytes per row8 | 8,060 | 8,060 |
Bytes per varchar(max), varbinary(max), xml, text, or image column | 2^31-1 | 2^31-1 |
Characters per ntext or nvarchar(max) column | 2^30-1 | 2^30-1 |
Clustered indexes per table | 1 | 1 |
Columns in GROUP BY, ORDER BY | Limited only by number of bytes | Limited only by number of bytes |
Columns or expressions in a GROUP BY WITH CUBE or WITH ROLLUP statement | 10 | 10 |
Columns per index key7 | 16 | 16 |
Columns per foreign key | 16 | 16 |
Columns per primary key | 16 | 16 |
Columns per base table | 1,024 | 1,024 |
Columns per SELECT statement | 4,096 | 4,096 |
Columns per INSERT statement | 1,024 | 1,024 |
Connections per client | Maximum value of configured connections | Maximum value of configured connections |
Database size | 524,258 terabytes | 524,258 terabytes |
Databases per instance of SQL Server | 32,767 | 32,767 |
Filegroups per database | 32,767 | 32,767 |
Files per database | 32,767 | 32,767 |
File size (data) | 16 terabytes | 16 terabytes |
File size (log) | 2 terabytes | 2 terabytes |
Foreign key table references per table4 | 253 | 253 |
Identifier length (in characters) | 128 | 128 |
Instances per computer | 50 instances on a stand-alone server for all SQL Server 2005 editions except for Workgroup Edition. Workgroup Edition supports a maximum of 16 instances. SQL Server 2005 supports 25 instances on a failover cluster. | 50 instances on a stand-alone server. 25 instances on a failover cluster. |
Length of a string containing SQL statements (batch size)1 | 65,536 * Network packet size | 65,536 * Network packet size |
Locks per connection | Maximum locks per server | Maximum locks per server |
Locks per instance of SQL Server5 | Up to 2,147,483,647 | Limited only by memory |
Nested stored procedure levels6 | 32 | 32 |
Nested subqueries | 32 | 32 |
Nested trigger levels | 32 | 32 |
Nonclustered indexes per table | 249 | 249 |
Parameters per stored procedure | 2,100 | 2,100 |
Parameters per user-defined function | 2,100 | 2,100 |
REFERENCES per table | 253 | 253 |
Rows per table | Limited by available storage | Limited by available storage |
Tables per database3 | Limited by number of objects in a database | Limited by number of objects in a database |
Partitions per partitioned table or index | 1,000 | 1,000 |
Statistics on non-indexed columns | 2,000 | 2,000 |
Tables per SELECT statement | 256 | 256 |
Triggers per table3 | Limited by number of objects in a database | Limited by number of objects in a database |
UNIQUE indexes or constraints per table | 249 nonclustered and 1 clustered | 249 nonclustered and 1 clustered |
User connections | 32,767 | 32,767 |
XML indexes | 249 | 249 |
1 Network Packet Size is the size of the tabular data stream (TDS) packets used to communicate between applications and the relational Database Engine. The default packet size is 4 kilobytes (KB), and is controlled by the network packet size configuration option.
2 The maximum number of bytes in any index key cannot exceed 900 in SQL Server 2005. You can define a key using variable-length columns whose maximum sizes add up to more than 900, provided no row is ever inserted with more than 900 bytes of data in those columns. In SQL Server 2005, you can include nonkey columns in a nonclustered index to avoid the maximum index key size of 900 bytes. For more information, see Index with Included Columns.
3 Database objects include objects such as tables, views, stored procedures, user-defined functions, triggers, rules, defaults, and constraints. The sum of the number of all objects in a database cannot exceed 2,147,483,647.
4 Although a table can contain an unlimited number of FOREIGN KEY constraints, the recommended maximum is 253. Depending on the hardware configuration hosting SQL Server, specifying additional foreign key constraints may be expensive for the query optimizer to process.
5 This value is for static lock allocation. Dynamic locks are limited only by memory.
6 If a stored procedure accesses more than 8 databases, or more than 2 databases in interleaving, you will receive an error.
7 If the table contains one or more XML indexes, the clustering key of the user table is limited to 15 columns because the XML column is added to the clustering key of the primary XML index. In SQL Server 2005, you can include nonkey columns in a nonclustered index to avoid the limitation of a maximum of 16 key columns. For more information, see Index with Included Columns.
8 SQL Server 2005 supports row-overflow storage which enables variable length columns to be pushed off-row. Only a 24-byte root is stored in the main record for variable length columns pushed out of row; because of this, the effective row limit is higher than in previous releases of SQL Server. For more information, see the "Row-Overflow Data Exceeding 8 KB" topic in SQL Server 2005 Books Online.