Entrambi exec
e execute_sql
eseguire nel proprio ambito. E la modifica del database influirà solo sul proprio ambito. Quindi potresti:
set @sql = 'use ' + quotename(@new_db_name) + '; disable trigger t1;'
exec (@sql)
Per quanto ne so, non c'è modo di modificare il contesto del database dell'ambito corrente in un nome di database variabile.