• how are you building your string? if you're attempting to concatenate 'regular' varchars together, they'll max out at 8000 characters regardless of what you're trying to stuff them into.

    declare @sql nvarchar(max), @fragment varchar(3000)

    set @fragment = replicate( 'long text!', 300 )

    print len(@fragment) -- 3000

    set @sql = @fragment + @fragment + @fragment

    print len(@sql) -- 8000

    set @sql = cast(@fragment as nvarchar(max)) + cast(@fragment as nvarchar(max)) + cast(@fragment as nvarchar(max))

    print len(@sql) -- 9000