Сколько символов может содержать SQL-оператор SQL? - PullRequest
13 голосов
/ 09 февраля 2012

Какова максимальная длина оператора SQL в SQL Server? Зависит ли эта длина от версии SQL Server?

Например, в

DECLARE @SQLStatement NVARCHAR(MAX) = N'Something' 
EXEC(@SQLStatement) 

@SQLStatement может иметь длину X символов. Что такое Х?

Ответы [ 4 ]

13 голосов
/ 09 февраля 2012

Это будет в 65 536 раз больше размера вашего сетевого пакета, согласно документации

Похоже, что это то же самое, по крайней мере, с SQL Server 2005

4 голосов
/ 20 февраля 2012

Дословно от документация :

65 536 * Размер сетевого пакета

Что непонятно, но что сразу же спросит любой здравомыслящий человек, что означает «Размер сетевого пакета»?

Размер сетевого пакета, в этом случае, как и ожидалось, не относится к физическому размеру, поскольку это нарушило бы абстракцию сквозного протокола гарантированной доставки (TCP), а скорее относится размер пакета в контексте протокола потока табличных данных, используемого SQL Server для связи. Согласно той же документации, размер пакета TDS по умолчанию составляет 4KB .

3 голосов
/ 09 февраля 2012

Если ваша переменная определена как NVARCHAR(MAX), тогда она может иметь размер 2 ГБ (помните, что NVARCHAR использует два байта для каждого символа, за исключением сжатия). Однако если вы приближаетесь к этому размеру, длина вашего оператора SQL, вероятно, меньше всего вас беспокоит.

1 голос
/ 09 февраля 2012

Длина оператора SQL должна быть как можно короче при сохранении понимания человеком .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...