Oba exec
i execute_sql
działają we własnym zakresie. A zmiana w bazie danych wpłynie tylko na ich własny zakres. Możesz więc:
set @sql = 'use ' + quotename(@new_db_name) + '; disable trigger t1;'
exec (@sql)
O ile mi wiadomo, nie ma możliwości zmiany kontekstu bazy danych bieżącego zakresu na zmienną nazwę bazy danych.