Båda exec
och execute_sql
köra i sin egen omfattning. Och förändringen i databasen kommer bara att påverka deras egen omfattning. Så du kunde:
set @sql = 'use ' + quotename(@new_db_name) + '; disable trigger t1;'
exec (@sql)
Såvitt jag vet finns det inget sätt att ändra databaskontexten för det aktuella omfånget till ett variabelt databasnamn.