L'opérateur +=s'applique uniquement aux types de données numériques dans SQL Server. Documentation Microsoft ici
Pour la concaténation de chaînes, vous devez écrire l'affectation et la concaténation séparément.
DECLARE @sql nvarchar(max);
SELECT @sql = N'';
SELECT @sql = @sql + [definition] + N'
GO
'
FROM sys.sql_modules
WHERE OBJECT_NAME(object_id) LIKE 'dt%'
ORDER BY OBJECT_NAME(object_id);
PRINT @sql;
De plus, si vous exécutez cette requête dans Management Studio, gardez à l'esprit qu'il existe une limite à la taille des données qu'elle renverra (y compris dans une instruction d'impression). Ainsi, si les définitions de vos modules dépassent cette limite, elles seront tronquées dans la sortie.