複数のデータベース間でさまざまなコマンドを実行するプロセスがありますが、動的SQLを使用して 'use @var'でDBを変更しても、実際にはデータベースは変更されません。
これを[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()
[マスター]を現在のデータベース名として返します- use [test_db]
動的ではなくコマンドとして入力すると、正しい名前が返されます。
これを実行してデータベースを正しく切り替える方法はありますか?
exec OtherDatabase.sys.sp_executesql N'select db_name()'