我有一个涉及在多个数据库之间执行各种命令的过程-但是,当我使用动态SQL通过“ use @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()
返回[Master]作为当前数据库名称-如果我将其use [test_db]
作为命令而不是动态输入,则它将返回正确的名称。
有没有一种方法可以在数据库之间正确切换?
exec OtherDatabase.sys.sp_executesql N'select db_name()'