Ambos
exec
e execute_sql
executar em seu próprio escopo. E a mudança no banco de dados afetará apenas seu próprio escopo. Então você poderia:set @sql = 'use ' + quotename(@new_db_name) + '; disable trigger t1;'
exec (@sql)
Até onde eu sei, não há como alterar o contexto do banco de dados do escopo atual para um nome de banco de dados variável.