Problem wydaje się być związany z instrukcją SET. Myślę, że wyrażenie nie może mieć więcej niż 4000 bajtów. Nie ma potrzeby dokonywania żadnych zmian w jakichkolwiek ustawieniach, jeśli wszystko, co próbujesz zrobić, to przypisać dynamicznie wygenerowaną instrukcję, która ma więcej niż 4000 znaków. Co musisz zrobić, to podzielić swoje zadanie. Jeśli instrukcja ma długość 6000 znaków, znajdź logiczny punkt przerwania, a następnie połącz drugą połowę z tą samą zmienną. Na przykład:
SET @Query = 'SELECT ....' [Up To 4,000 characters, then rest of statement as below]
SET @Query = @Query + [rest of statement]
Teraz uruchom zapytanie w normalny sposób, tj. EXEC ( @Query )