Anda tidak perlu membagi teks menjadi beberapa bagian. Anda perlu memastikan bahwa pemotongan tidak terjadi saat Anda menggabungkan string :
Jadi, pastikan bahwa rangkaian pertama bekerja dengan tipe nilai besar (dan dengan demikian menghasilkan tipe nilai besar sebagai hasilnya) dan setiap rangkaian berikutnya harus disimpan dari pemotongan:
set @template=CONVERT(nvarchar(max),'if NOT EXISTS(select * from ' ) + @DestinationDB + ...
(Dengan cara ini, Anda tidak perlu memasukkan konversi di mana-mana )
Ini menghasilkan kesalahan:
declare @t nvarchar(max)
set @t = 'select LEN(''' + REPLICATE('A',3000) + REPLICATE('B',3000) + REPLICATE('C',3000) + ''')'
exec sp_executesql @t
Dan ini menghasilkan hasil 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