This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Download Microsoft Edge
More info about Internet Explorer and Microsoft Edge
Applies to:
SQL Server
This article shows maximum sizes and numbers of various objects defined in SQL Server 2016 (13.x) and later. If you want to view edition limits, see
Compute capacity limits by edition of SQL Server
.
For SQL Server 2014 (12.x), see
Maximum capacity specifications for SQL Server 2014
.
Database Engine objects
Maximum values of various objects defined in SQL Server databases, or referenced in Transact-SQL statements.
SQL Server Database Engine object
Maximum values for SQL Server (64-bit)
Additional Information
Batch size
65,536 * (network packet size)
Network packet size is the size of the tabular data stream (TDS) packets used to communicate between the relational Database Engine and applications. The default packet size is 4 KB. Network packet size controls this configuration option.
Byte length of a string containing Transact-SQL statements (batch size)
65,536 * (network packet size)
Network packet size is the size of the tabular data stream (TDS) packets used to communicate between the relational Database Engine and applications. The default packet size is 4 KB, and is controlled by the network packet size configuration option.
Bytes per short string column
8,000
Bytes per
GROUP BY
,
ORDER BY
8,060
Bytes per index key
900 bytes for a clustered index. 1,700 bytes for a nonclustered index. For SQL Server 2014 (12.x) and earlier, all versions supported 900 bytes for all index types.
The maximum number of bytes in a clustered index key can't exceed 900. For a nonclustered index key, the maximum is 1,700 bytes.
You can define a key using variable-length columns whose maximum sizes add up to more than the limit. However, the combined sizes of the data in those columns can never exceed the limit.
In a nonclustered index, you can include extra non-key columns, and they don't count against the size limit of the key. The non-key columns might help some queries perform better.
Bytes per index key for memory-optimized tables
2,500 bytes for a nonclustered index. No limit for a hash index, as long as all index keys fit in-row.
On a memory-optimized table, a nonclustered index can't have key columns whose maximum declared sizes exceed 2,500 bytes. It doesn't matter if the actual data in the key columns would be shorter than the maximum declared sizes.
For a hash index key, there's no hard limit on size.
For indexes on memory-optimized tables, there's no concept of included columns, since all indexes inherently cover all columns.
For a memory-optimized table, even though the row size is 8,060 bytes, some variable-length columns can be physically stored outside those 8,060 bytes. However, the maximum declared sizes of all key columns for all indexes on a table, plus any additional fixed-length columns in the table, must fit in the 8,060 bytes.
Bytes per foreign key
Bytes per primary key
Bytes per row
8,060
SQL Server 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. For more information, see
Large Row Support
.
Bytes per row in memory-optimized tables
8,060
Memory-optimized tables on SQL Server 2016 (13.x) and later support off-row storage. Variable length columns are pushed off-row if the maximum sizes for all the columns in the table exceeds 8,060 bytes; this action is a compile-time decision. Only an 8-byte reference is stored in-row for columns stored off-row. For more information, see
Table and Row Size in Memory-Optimized Tables
.
Bytes in source text of a stored procedure
Lesser of batch size or 250 MB
Bytes per
varchar(max)
,
varbinary(max)
,
xml
,
text
, or
image
column
2^31-1
Characters per
ntext
or
nvarchar(max)
column
2^30-1
Clustered indexes per table
Columns in
GROUP BY
,
ORDER BY
Limited only by number of bytes
Columns or expressions in a
GROUP BY WITH CUBE
or
GROUP BY WITH ROLLUP
statement
Columns per index key
If the table contains one or more XML indexes, the clustering key of the user table is limited to 31 columns because the XML column is added to the clustering key of the primary XML index. You can include non-key columns in a nonclustered index, to avoid the limitation of a maximum of 32 key columns. For more information, see
Create Indexes with Included Columns
.
Columns per foreign key or primary key
Columns per
INSERT
statement
4,096
Columns per
SELECT
statement
4,096
Columns per table
1,024
Tables that include sparse column sets include up to 30,000 columns. See
sparse column sets
.
Columns per
UPDATE
statement
4,096
Different limits apply to
sparse column sets
.
Columns per view
1,024
Connections per client
Maximum value of configured connections
Database size
524,272 terabytes
Databases per instance of SQL Server
32,767
Filegroups per database
32,767
Filegroups per database for memory-optimized data
Files per database
32,767
File size (data)
16 terabytes
File size (log)
2 terabytes
Data files for memory-optimized data per database
4,096 in SQL Server 2014 (12.x). The limit is less strict on SQL Server 2016 (13.x) and later.
Delta file per data file for memory-optimized data
Foreign key table references per table
Outgoing = 253.
Incoming = 10,000.
For restrictions, see
Create Foreign Key Relationships
.
Identifier length (in characters)
Instances per computer
50 instances on a stand-alone server.
25 failover cluster instances when using a shared cluster drive as storage.
50 failover cluster instances with SMB file shares as the storage option.
Indexes per memory-optimized table
999 starting SQL Server 2017 (14.x) and in Azure SQL Database.
8 in SQL Server 2016 (13.x) and SQL Server 2014 (12.x).
Locks per connection
Maximum locks per server
Locks per instance of SQL Server
Limited only by memory
This value is for static lock allocation. Dynamic locks are limited only by memory.
Nested stored procedure levels
If a stored procedure accesses more than 64 databases, or more than two databases in interleaving, you'll receive an error.
Nested subqueries
Nested transactions
4,294,967,296
Nested trigger levels
Nonclustered indexes per table
Number of distinct expressions in the
GROUP BY
clause when any of the following are present:
CUBE
,
ROLLUP
,
GROUPING SETS
,
WITH CUBE
,
WITH ROLLUP
Number of grouping sets generated by operators in the
GROUP BY
clause
4,096
Parameters per stored procedure
2,100
Parameters per user-defined function
2,100
REFERENCES per table
Rows per table
Limited by available storage
Tables per database
Limited by total number of objects in a database
Objects include tables, views, stored procedures, user-defined functions, triggers, rules, defaults, and constraints. The sum of the number of all objects in a database can't exceed 2,147,483,647.
Partitions per partitioned table or index
15,000
Statistics on non-indexed columns
30,000
Tables per
SELECT
statement
Limited only by available resources
Triggers per table
Limited by number of objects in a database
Objects include tables, views, stored procedures, user-defined functions, triggers, rules, defaults, and constraints. The sum of the number of all objects in a database can't exceed 2,147,483,647.
User connections
32,767
XML indexes
Columns in a table (merge publication)
If row tracking is used for conflict detection (the default), the base table can include a maximum of 1,024 columns. However, the publication needs to filter the article so that a maximum of 246 columns are published. If column tracking is used, the base table can include a maximum of 246 columns.
Columns in a table (SQL Server snapshot or transactional publication)
1,000
The base table can include the maximum number of columns allowable in the SQL Server publication database (1,024), but columns must be filtered from the article if they exceed the maximum specified for the publication type.
Columns in a table (Oracle snapshot or transactional publication)
The base table can include the maximum number of columns allowable in the SQL Server publication database (1,024), but columns must be filtered from the article if they exceed the maximum specified for the publication type.
Bytes for a column used in a row filter (merge publication)
1,024
Bytes for a column used in a row filter (snapshot or transactional publication)
8,000
Hardware and software requirements for installing SQL Server
Check parameters for system configuration checker
Download SQL Server