Какова максимальная длина SQL-запроса в SQL Server? Эта длина зависит от версии SQL Server?
Например, в
DECLARE @SQLStatement NVARCHAR(MAX) = N'Something'
EXEC(@SQLStatement)
@SQLStatement
допускается длительность X символов. Что такое X?
Какова максимальная длина SQL-запроса в SQL Server? Эта длина зависит от версии SQL Server?
Например, в
DECLARE @SQLStatement NVARCHAR(MAX) = N'Something'
EXEC(@SQLStatement)
@SQLStatement
допускается длительность X символов. Что такое X?
Это будет 65536 раз больше вашего размера сетевого пакета, согласно документации
Похоже, что это по крайней мере так же, как SQL Server 2005
Verbatim from документация:
65,536 * Размер сетевого пакета
Что неясно, но что любой здравомыслящий человек сразу задал вопрос, что означает "Размер сетевого пакета"?
Размер сетевого пакета в этом случае, как и ожидалось, не относится к физическому размеру, поскольку это нарушит абстракцию сквозного гарантированного протокола потоковой доставки (TCP), а скорее относится к размеру пакета в контексте протокола табличного потока данных, используемого SQL Server для связи. Согласно той же документации, размер по умолчанию для пакета TDS 4 КБ.
Если ваша переменная определена как NVARCHAR(MAX)
, то она может иметь размер 2 ГБ (помните, что NVARCHAR
использует два байта для каждого символа, а также сжатие). Однако, если вы приближаетесь ближе к этому размеру, длина вашего оператора SQL, вероятно, является наименьшей из ваших проблем.
Длина оператора SQL должна быть как можно короче, сохраняя человеческую понятность.
Поскольку синтаксический анализ и компиляция оператора SQL в фактическое задание для механизма БД очень быстро, длина инструкции не имеет большого значения для анализатора. Гораздо важнее, особенно для созданного вручную оператора SQL, заключается в том, что человек может сохранить это утверждение в будущем.