我有一个涉及在多个数据库之间执行各种命令的过程 - 但是,当我使用动态 SQL 通过“使用 @var”更改数据库时,它实际上并没有更改数据库。
在 [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()
Run Code Online (Sandbox Code Playgroud)
返回 [Master] 作为当前数据库名称 - 如果我将其use [test_db]作为命令而不是动态放置,则它返回正确的名称。
有没有办法做到这一点,可以在数据库之间正确切换?