Ho un processo che prevede l'esecuzione di vari comandi tra più database - tuttavia, quando utilizzo SQL dinamico per cambiare DB con 'use @var', non cambia effettivamente il database.
Eseguendo questo in [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()
Restituisce [Master] come nome del database corrente - se inserisco use [test_db]
un comando, anziché in modo dinamico, restituisce il nome corretto.
C'è un modo per farlo che passerà correttamente tra i database?
exec OtherDatabase.sys.sp_executesql N'select db_name()'