Подтвердить что ты не робот

Сколько символов может содержать SQL-оператор SQL Server?

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

Например, в

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

Verbatim from документация:

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

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

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

Ответ 3

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

Ответ 4

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

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