Не е необходимо да разделяте текста на части. Трябва да сте сигурни, че съкращаването няма да се случи, докато сте конкатениране на низове :
Така че, уверете се, че първото конкатениране работи с тип голяма стойност (и по този начин произвежда голям тип стойност като резултат) и всяко следващо конкатениране трябва да бъде запазено от съкращаване:
set @template=CONVERT(nvarchar(max),'if NOT EXISTS(select * from ' ) + @DestinationDB + ...
(По този начин не е необходимо да вмъквате реализации навсякъде )
Това генерира грешка:
declare @t nvarchar(max)
set @t = 'select LEN(''' + REPLICATE('A',3000) + REPLICATE('B',3000) + REPLICATE('C',3000) + ''')'
exec sp_executesql @t
И това дава резултат 9000:
declare @t nvarchar(max)
set @t = CONVERT(nvarchar(max),'select LEN(''') + REPLICATE('A',3000) + REPLICATE('B',3000) + REPLICATE('C',3000) + ''')'
exec sp_executesql @t