Tôi có một quy trình bao gồm thực thi các lệnh khác nhau giữa nhiều cơ sở dữ liệu - tuy nhiên, khi tôi sử dụng SQL động để thay đổi DB bằng 'use @var', thì nó không thực sự thay đổi cơ sở dữ liệu.
Thực hiện điều này trong [test_db]:
declare @currentDB varchar(max)
declare @sql varchar(max)
set @currentDB = DB_NAME()
set @sql = 'use [' + @currentDB +']'
use master
exec(@sql)
select DB_NAME()
Trả về [Master] làm tên cơ sở dữ liệu hiện tại - nếu tôi đặt use [test_db]
dưới dạng lệnh, thay vì động, thì nó trả về tên chính xác.
Có cách nào để làm điều này sẽ chuyển đổi chính xác giữa các cơ sở dữ liệu?
exec OtherDatabase.sys.sp_executesql N'select db_name()'