O problema parece estar associado à instrução SET. Acho que a expressão não pode ter mais de 4.000 bytes de tamanho. Não há necessidade de fazer alterações em nenhuma configuração se tudo o que você está tentando fazer é atribuir uma instrução gerada dinamicamente com mais de 4.000 caracteres. O que você precisa fazer é dividir sua tarefa. Se sua instrução tiver 6.000 caracteres, encontre um ponto de interrupção lógico e concatene a segunda metade com a mesma variável. Por exemplo:
SET @Query = 'SELECT ....' [Up To 4,000 characters, then rest of statement as below]
SET @Query = @Query + [rest of statement]
Agora execute sua consulta normalmente, ou seja,
EXEC ( @Query )