Я использую динамику c SQL для объединения нескольких скриптов, которые я загрузил в таблицу. Он возьмет эти отдельные сценарии, объединит их в один сценарий, а затем поместит этот готовый сценарий в другую таблицу. До сих пор он работал прекрасно, успешно объединяя около 17 скриптов. Но вчера попробовал 80. И вот в чем проблема. Каждый раз, когда я пробую, он набирает 78 165 символов. Его внутренности go выглядят следующим образом:
SET @FinScriptSQL
= N'SELECT script, row_number( ) over( order by scriptTypeId ) as execOrder INTO #' + @FinScriptName
+ N' from dbo.' + @FinScriptName
+ N';
DECLARE @tsqlStmt NVARCHAR(MAX);
SELECT @tsqlStmt = STUFF(
(
SELECT (CHAR(13) + CHAR(10) + script) AS [text()]
FROM #' + @FinScriptName
+ N'
ORDER BY execOrder
FOR XML PATH(''''), TYPE).value(''.'', ''nvarchar( max )''),
1 ,
1 ,
NULL
);
CREATE TABLE dbo.' + @FinScriptName + N'_FinishedScripts
(
Name sysname NULL,
FinishedScript NVARCHAR(MAX) NULL
);
INSERT INTO dbo.' + @FinScriptName + N'_FinishedScripts
SELECT ''' + @FinScriptName + N''', @tsqlStmt;'
PRINT @FinScriptSQL;
EXECUTE sp_executesql @FinScriptSQL;
Столбец таблицы, в котором находятся отдельные скрипты, является NVARCHAR (MAX), как и столбец назначения новой таблицы. Я подумал, что это может быть настройка на сервере SQL, поэтому я уже убедился, что максимальное количество извлекаемых символов широко открыто. Есть идеи?