Les deux exec
et execute_sql
exécuter dans leur propre périmètre. Et le changement de base de données n'affectera que leur propre portée. Ainsi, vous pourriez :
set @sql = 'use ' + quotename(@new_db_name) + '; disable trigger t1;'
exec (@sql)
Autant que je sache, il n'y a aucun moyen de changer le contexte de la base de données de la portée actuelle en un nom de base de données variable.