我正在尝试使用Database_name命令来使用以下动态查询来切换特定数据库。查询已成功执行但未切换数据库。
declare @dbname varchar(50)='Database_name',
@query nvarchar(200)
set @query='use '+@dbname+''
EXEC sp_executesql @query
答案 0 :(得分:1)
实际上它有效,但是一旦查询结束,上下文就会消失
declare @dbname varchar(50)='model',
@query nvarchar(200)
set @query='use '+@dbname+'
select db_name()'
print @query
exec (@Query)
以上查询将模型打印为数据库名称,并将上下文还原为..
有关此内容的更多详情:Switching between databases with dynamic SQL
子进程(即EXEC / sp_executesql)中进行的会话级更改在该子进程结束时消失。这包括USE和SET语句以及在该子过程中创建的任何本地临时表。
另一种方法是将SSMS更改为结果到文本选项,复制并执行