SQL Server / SSIS - динамический T-SQL, разность NVARCHAR (MAX) - PullRequest
1 голос
/ 10 декабря 2010

Я пишу некоторый динамический SQL:

DECLARE @sql NVARCHAR(MAX)

SET @sql = '...'

EXEC sp_executesql @sql

Если я выполню это из SSMS, запрос будет выполнен успешно, потому что он содержит менее 8000 (точнее 7787) символов.Если я выполню это из служб SSIS (используя соединение ADO.NET), запрос не будет выполнен, потому что NVARCHAR(MAX) является эквивалентом NVARCHAR(4000).

Я понимаю, что это как-то связано с совместимостью - необходимо подключение из служб SSIS.поддерживать больше, чем просто SQL Server.

Какие есть варианты обходного пути?

1 Ответ

2 голосов
/ 10 декабря 2010

Для меня я бы пошел по этому пути (в порядке предпочтения):

  1. Найдите способ сделать это без использования динамического SQL (такой большой динамический сценарий должен быть кошмаром для отладки или изменения) ...

  2. Разделите некоторые из них на хранимые процедуры и вызовите их из вашего динамического SQL.

  3. Разделите его на несколько меньших подзапросов.

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