Ambos exec
y execute_sql
ejecutar en su propio ámbito. Y el cambio en la base de datos solo afectará su propio alcance. Entonces podrías:
set @sql = 'use ' + quotename(@new_db_name) + '; disable trigger t1;'
exec (@sql)
Hasta donde yo sé, no hay forma de cambiar el contexto de la base de datos del alcance actual a un nombre de base de datos variable.