Eu tenho um processo que envolve a execução de vários comandos entre vários bancos de dados - no entanto, quando eu uso o SQL dinâmico para alterar o banco de dados com 'use @var', ele não altera o banco de dados.
Executando isso em [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()
Retorna [Master] como o nome atual do banco de dados - se eu colocar use [test_db]
como comando, em vez de dinamicamente, ele retornará o nome correto.
Existe uma maneira de fazer isso que alternará corretamente entre os bancos de dados?
exec OtherDatabase.sys.sp_executesql N'select db_name()'
Isso também funciona.
fonte
Aprendendo com o post anterior, fui um pouco mais fundo e me impressionei ...
fonte