Beide exec
und execute_sql
laufen in ihrem eigenen Bereich. Und die Änderung der Datenbank wirkt sich nur auf ihren eigenen Bereich aus. Sie könnten also:
set @sql = 'use ' + quotename(@new_db_name) + '; disable trigger t1;'
exec (@sql)
Soweit ich weiß, gibt es keine Möglichkeit, den Datenbankkontext des aktuellen Bereichs in einen variablen Datenbanknamen zu ändern.