Você declarou isso como nvarchar(max) que permite 2 GB de dados para armazenar 2 GB.
O que está acontecendo:
- O tipo de dados ainda não é nvarchar(max) até atribuição para @sql1
- Antes disso, é uma coleção de strings, cada uma com menos de 4.000 (constantes)
- Você está concatenando constantes curtas com variáveis curtas (short =<4000)
- Então você tem 4.000 caracteres colocados em @sql1
Portanto, certifique-se de ter nvarchar(max) no lado direito.
Uma ideia. A 2ª linha concatena nvarchar(max) com uma constante =nvarchar(max)
SET @SQL1 = ''
SET @SQL1 = @SQL1 + 'SELECT DISTINCT Venue...
....
Não é diferente da divisão de inteiros que acontece em todos os idiomas.
declare @myvar float
set @myvar = 1/2 --gives zero because it's integer on the right
A precedência do operador (infere a precedência do tipo de dados) é sempre a "atribuição" por último... por que as strings unicode no SQL Server devem ser diferentes?