尝试使用动态查询执行use database_name命令但不切换数据库名称

时间:2017-08-17 10:09:50

标签: sql-server

我正在尝试使用Database_name命令来使用以下动态查询来切换特定数据库。查询已成功执行但未切换数据库。

declare @dbname varchar(50)='Database_name',
        @query nvarchar(200)
set @query='use '+@dbname+''
EXEC sp_executesql @query

1 个答案:

答案 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更改为结果到文本选项,复制并执行