Cả exec
và execute_sql
chạy trong phạm vi riêng của họ. Và sự thay đổi trong cơ sở dữ liệu sẽ chỉ ảnh hưởng đến phạm vi của riêng họ. Vì vậy, bạn có thể:
set @sql = 'use ' + quotename(@new_db_name) + '; disable trigger t1;'
exec (@sql)
Theo như tôi biết, không có cách nào để thay đổi ngữ cảnh cơ sở dữ liệu của phạm vi hiện tại thành một tên cơ sở dữ liệu biến.