Все, у меня есть большой (неизбежный) динамический SQL-запрос. Из-за количества полей в критериях выбора строка, содержащая динамический SQL, растет более 4000 символов. Теперь я понимаю, что для NVARCHAR(MAX)
существует 4000 max, но, глядя на выполненный SQL в Server Profiler для оператора
DELARE @SQL NVARCHAR(MAX);
SET @SQL = 'SomeMassiveString > 4000 chars...';
EXEC(@SQL);
GO
Кажется, что работает (!?), для другого большого запроса он вызывает ошибку, связанную с этим пределом 4000 (!?), он в принципе урезает весь SQL после этого предела 4000 и оставляет меня с ошибка синтаксиса. Несмотря на это в профилировщике, этот динамический SQL-запрос показывает полный (!?).
Что именно происходит здесь, и я должен просто преобразовать эту переменную @SQL в VARCHAR и продолжить с ней?
Спасибо за ваше время.
Ps. Было бы неплохо иметь возможность распечатывать более 4000 символов для просмотра этих больших запросов. Следующие ограничения ограничены 4000
SELECT CONVERT(XML, @SQL);
PRINT(@SQL);
есть ли какой-нибудь другой классный способ?