在 MS Sql Server 2016 中将服务器名称声明为变量

Declare the server name as a variable in MS Sql Server 2016

我有一个很大的脚本文件,我需要在另一台服务器上使用它。我需要在开始时使用 Declare 编辑一次服务器名称,这样我就可以仅通过更改变量的值就可以在多个服务器上使用相同的脚本。

类似的东西:

Declare @Quell nvarchar(100)
SET @Quell = '[server1].[dbo]'

SELECT * From @Quell.[Documents] 

但是没有用。

怎么做?谢谢

不幸的是,SQL 服务器不允许宏替换,但您可以使用动态 SQL。

Declare @Quell nvarchar(100)
SET @Quell = '[server1].[dbo]'

Declare @SQL varchar(max) 
SET @SQL = 'SELECT * From ' + @Quell +'.[Documents]'
Exec(@SQL)

如果您从 SQL Server Management Studio 运行ning 脚本,您可以使用 SQLCMD 变量和 运行 SQL 中的脚本]CMD 模式(查询-->SQLCMD 模式)。 SQLCMD 脚本也可以使用 SQLCMD 命令行实用程序执行,变量值作为命令行参数传递。

示例脚本:

:SETVAR Quell "[server1].[dbo]"

SELECT * From $(Quell).[Documents];