Text nemusíte rozdělovat na části. Musíte se ujistit, že nedojde ke zkrácení, když jste řetězce zřetězení :
Ujistěte se tedy, že první zřetězení pracuje s typem velké hodnoty (a tedy výsledkem je typ velké hodnoty) a každé následující zřetězení by mělo být uloženo před zkrácením:
set @template=CONVERT(nvarchar(max),'if NOT EXISTS(select * from ' ) + @DestinationDB + ...
(Tímto způsobem nemusíte vkládat konverze všude )
To generuje chybu:
declare @t nvarchar(max)
set @t = 'select LEN(''' + REPLICATE('A',3000) + REPLICATE('B',3000) + REPLICATE('C',3000) + ''')'
exec sp_executesql @t
A výsledkem je výsledek 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