Keduanya exec
dan execute_sql
berjalan dalam ruang lingkup mereka sendiri. Dan perubahan database hanya akan mempengaruhi ruang lingkup mereka sendiri. Jadi Anda bisa:
set @sql = 'use ' + quotename(@new_db_name) + '; disable trigger t1;'
exec (@sql)
Sejauh yang saya tahu, tidak ada cara untuk mengubah konteks basis data dari cakupan saat ini menjadi nama basis data variabel.