Спецификации максимальной емкости для 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 КБ. Размер сетевого пакета определяет этот параметр конфигурации.
Длина (в байтах) строки, содержащей инструкции Transact-SQL (размер пакета) 65 536 * (размер сетевого пакета) Размер сетевого пакета — это размер пакетов потока табличных данных (TDS), которые используются для обмена данными между приложениями и реляционным ядром СУБД. По умолчанию размер пакета равен 4 КБ, а его настройка осуществляется с помощью параметра конфигурации network packet size.
Байтов на столбец с короткой строкой 8000
Байтов на GROUP BY, ORDER BY 8060
Байтов на ключ индекса 900 байтов для кластеризованного индекса. 1700 байт для некластеризованного индекса. До SQL Server 2014 (12.x) все версии поддерживали 900 байт для всех типов индекса. Максимальное число байтов в любом ключе индекса не может превышать 900. Для ключа некластеризованного индекса максимум составляет 1700 байт.

Можно определить ключ, использующий столбцы переменной длины, максимальная длина которых превышает лимит. При этом совокупные размеры данных в этих столбцах ни в коем случае не могут превышать лимит.

В некластеризованный индекс можно включать дополнительные неключевые столбцы — при расчете предельного размера ключа они не учитываются. Неключевые столбцы могут помочь в выполнении некоторых запросов.
Байт на ключ индекса в оптимизированных для памяти таблицах 2500 байт для некластеризованного индекса. Пока все ключи индекса входят в строку, хэш-индекс не ограничивается. В таблице, оптимизированной для памяти, некластеризованный индекс не может иметь ключевые столбцы, максимальные заявленные размеры которых не превышают 2500 байт. Соотношение размера фактических данных в столбцах ключей и максимальных заявленных размеров несущественно.

Размер ключа для хэш-индекса не ограничивается.

Для индексов в таблицах, оптимизированных для памяти, понятие включенных столбцов не используется, поскольку все индексы по определению охватывают все столбцы.

Несмотря на то, что размер строки для таблиц, оптимизированных для памяти, составляет 8060 байт, размер некоторых столбцов переменной длины, хранящихся вне таблицы, может превышать 8060 байт. Тем не менее объявленные максимальные размеры всех ключевых столбцов для всех индексов в таблице в сумме с фиксированной длиной добавленных в эту таблицу столбцов должны соответствовать ограничению в 8060 байт.
Байтов на внешний ключ 900
Байтов на первичный ключ 900
Байтов на строку 8060 SQL Server поддерживает хранилище переполнения строк, что позволяет отправлять столбцы переменной длины вне строки. В основной записи для столбцов переменной длины, отправленных из строки, хранится только 24-байтовый корень. Дополнительные сведения о поддержке см. в разделе Поддержка больших строк.
Байтов на строку в оптимизированных для памяти таблицах 8060 Оптимизированные для памяти таблицы в SQL Server 2016 (13.x) и более поздних версий поддерживают хранилище вне строк. Столбцы переменной длины вытесняются за пределы строки, если максимальные размеры всех столбцов в таблице превышают 8060 байт; это действие представляет собой решение, которое используется во время компиляции. Для столбцов, которые хранятся вне строки, в строке сохраняются только 8-байтовые ссылки. Дополнительные сведения см. в статье Размер строк и таблицы для таблиц, оптимизированных для памяти.
Байтов в исходном тексте хранимой процедуры Меньше размера пакета или 250 МБ
Байтов на столбец varchar(max), varbinary(max), xml, text или image 2^31-1
Символов на столбец ntext или nvarchar(max) 2^30-1
Количество кластеризованных индексов в таблице 1
Столбцы в GROUP BY, ORDER BY Ограничивается только числом байтов
Столбцы или выражения в инструкции GROUP BY WITH CUBE или GROUP BY WITH ROLLUP 10
Столбцов на ключ индекса 32 Если в таблице имеется один или несколько индексов XML, ключ кластеризации пользовательской таблицы ограничивается 31 столбцом, потому что XML-столбец добавляется к ключу кластеризации первичного XML-индекса. Столбцы, не являющиеся ключами, можно включить в некластеризованный индекс, чтобы избежать ограничения не более 32 ключевых столбцов. Дополнительные сведения см. в статье Create Indexes with Included Columns.
Столбцов на внешний или первичный ключ 32
Столбцов на инструкцию INSERT 4096
Столбцов на инструкцию SELECT 4096
Столбцов на таблицу 1024 Таблицы с наборами разреженных столбцов содержат до 30 000 столбцов. См. раздел Наборы разреженных столбцов.
Столбцов на инструкцию UPDATE 4096 К наборам разреженных столбцов применяются различные ограничения.
Столбцов на представление 1024
Соединений на одного клиента Максимальное значение настроенных соединений
Размер базы данных 524 272 ТБ
Базы данных на экземпляр SQL Server 32 767
Файловых групп на одну базу данных 32 767
Файловые группы на базу данных для данных, оптимизированных для памяти 1
Файлов на одну базу данных 32 767
Размер файла (данные) 16 ТБ
Размер файла (журнал) 2 ТБ
Файлы данных для оптимизированных для памяти данных на одну базу данных 4096 в SQL Server 2014 (12.x). Ограничение менее строго в SQL Server 2016 (13.x) и более поздних версий.
Разностный файл на файл данных для данных, оптимизированных для памяти 1
Ссылок на таблицы внешнего ключа для таблицы Исходящие = 253.
Входящие = 10 000.
Ограничения см. в разделе Create Foreign Key Relationships.
Длина идентификатора (в символах) 128
Экземпляров на один компьютер 50 экземпляров на отдельном сервере.

25 экземпляров отказоустойчивого кластера при использовании общих дисков кластера в качестве хранилища.

50 экземпляров отказоустойчивого кластера с общими файловыми ресурсами SMB в качестве хранилища.
Индексы на оптимизированную для памяти таблицу 999 начиная с SQL Server 2017 (14.x) и в Базе данных SQL Azure.

8 в SQL Server 2016 (13.x) и SQL Server 2014 (12.x).
Блокировок на соединение Максимальное число блокировок на сервер
Блокировки для каждого экземпляра SQL Server Ограничено только объемом памяти Это значение относится только к статическим блокировкам. Количество динамических блокировок ограничивается только объемом памяти.
Уровней вложенных хранимых процедур 32 Если хранимая процедура обращается более чем к 64 базам данных или более чем к двум базам в режиме чередования, может возникнуть ошибка.
Вложенных запросов 32
Вложенных транзакций 4 294 967 296
Уровней вложенных триггеров 32
Количество некластеризованных индексов на одну таблицу 999
Количество уникальных выражений в предложении GROUP BY, если присутствует одна из следующих конструкций: CUBE, ROLLUP, GROUPING SETS, WITH CUBE, WITH ROLLUP 32
Количество группирующих наборов, сформированных операторами в предложении GROUP BY 4096
Параметров на одну хранимую процедуру 2100
Параметров на одну определяемую пользователем функцию 2100
REFERENCES на таблицу 253
Строк на таблицу Ограничено доступной памятью
Таблиц на одну базу данных Ограничено общим числом объектов в базе данных Объекты включают такие объекты, как таблицы, представления, хранимые процедуры, пользовательские функции, триггеры, правила, значения по умолчанию и ограничения. Суммарное число всех объектов в базе данных не может превышать 2 147 483 647.
Секций на секционированную таблицу или индекс 15 000
Статистических показателей неиндексированных столбцов 30,000
Таблиц на инструкцию SELECT Ограничивается только доступными ресурсами
Триггеров на таблицу Ограничено числом объектов в базе данных Объекты включают такие объекты, как таблицы, представления, хранимые процедуры, пользовательские функции, триггеры, правила, значения по умолчанию и ограничения. Суммарное число всех объектов в базе данных не может превышать 2 147 483 647.
Соединения пользователей 32 767
XML-индексы 249

Объекты приложений уровня данных SQL Server

Максимальные значения различных объектов, которые были протестированы в приложениях уровня данных SQL Server.

Объект DAC SQL Server Максимальные значения для SQL Server (64-разрядная версия) Дополнительная информация
Баз данных на DAC 1
Объекты для каждого приложения уровня данных Ограничено числом объектов в базе данных или доступной памятью. Типы объектов, включенные в ограничения, — пользователи, таблицы, представления, хранимые процедуры, определяемые пользователем функции, определяемые пользователем типы данных, роли баз данных, схемы и определяемые пользователем табличные типы.

Объекты репликации

Максимальные значения для различных объектов, определяемых в Репликации SQL Server.

Объект репликации SQL Server Максимальные значения для SQL Server
(64-разрядная версия)
Дополнительная информация
Статей (публикация слиянием) 2048
Статей (моментальный снимок или публикация транзакций) 32 767
Столбцов в таблице (публикация слиянием) 246 Если отслеживание строк используется для обнаружения конфликтов (по умолчанию), базовая таблица может содержать не более 1024 столбцов. Однако публикация должна отфильтровать статью таким образом, чтобы было опубликовано не более 246 столбцов. Если применяется трассировка на уровне столбцов, базовая таблица может содержать не более 246 столбцов.
Столбцы в таблице (моментальный снимок SQL Server или публикация транзакций) 1 000 Базовая таблица может включать максимальное количество столбцов, разрешенное в базе данных публикации SQL Server (1024), но столбцы должны быть отфильтрованы из статьи, если они превышают максимальное количество, заданное для данного типа публикации.
Столбцов в таблице (моментальный снимок или публикация транзакций Oracle) 995 Базовая таблица может включать максимальное количество столбцов, разрешенное в базе данных публикации SQL Server (1024), но столбцы должны быть отфильтрованы из статьи, если они превышают максимальное количество, заданное для данного типа публикации.
Байтов на столбец, используемый в фильтре строк (публикация слиянием) 1024
Байтов на столбец, используемый в фильтре строк (моментальный снимок или публикация транзакций) 8000

См. также