TSQL可配置的数据库名称

Mar*_*zák 0 sql t-sql sql-server

我试图使我的数据库名称可配置为能够运行这样的事情:

declare @x nvarchar(MAX)
declare @y nvarchar(MAX)

set @x = 'database1'
set @y = 'database2'

select * from @x.table1 INNER JOIN @y.table2 ON ....  
Run Code Online (Sandbox Code Playgroud)

有没有办法在SQL Server 2016上实现它?非常感谢.

Dan*_*man 5

一种方法是使用SQLCMD变量:

:SETVAR x "database1"
:SETVAR y "database2"

SELECT * FROM $(x).dbo.table1 INNER JOIN $(y).dbo.table2 ON ....  
Run Code Online (Sandbox Code Playgroud)

要在SSMS中运行SQLCMD脚本,请从"查询"菜单中打开SQLCMD模式.

如果使用该SQLCMD实用程序从命令行运行脚本,则可以省略SETVAR命令并将值作为命令行参数传递.