Спецификации максимальной емкости для 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 ключевых столбцов. Дополнительные сведения см. в разделе "Создание индексов с включенными столбцами".
Количество столбцов на каждый внешний или первичный ключ 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.
Ограничения см. в разделе "Создание связей внешнего ключа".
Длина идентификатора (в символах) 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
Объекты на каждый DAC Ограничено числом объектов в базе данных или доступной памятью. Типы объектов, включенные в ограничения, — пользователи, таблицы, представления, хранимые процедуры, определяемые пользователем функции, определяемые пользователем типы данных, роли баз данных, схемы и определяемые пользователем табличные типы.

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

Максимальные значения для различных объектов, определяемых в Репликации 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