将 SQLCMD 参数设置为链接服务器

Set SQLCMD parameter to LinkedServer

我有一个 VisualStudio SQL 项目,我需要在其中将 SQLCMD 参数设置为链接服务器的值。

假设项目中有以下查询:

select * from tableName

我需要将其更改为:

select * from [$(linkedServer)].tableName

其中 linkedServer = serverName.dbName.dbo 这转换为:

select * from [serverName.dbName.dbo].tableName

导致错误:

Invalid object name 'serverName.dbName.dbo.tableName'.

但是以下查询运行成功:select * from serverName.dbName.dbo.tableName.

有没有办法删除括号或其他解决方法?括号是必需的,因为该值作为 SQLCMD 参数传递。

[serverName.dbName.dbo].tableName 失败的原因是因为 SQL 会将 [] 之间的所有内容视为单个标识符。所以它正在 架构 中寻找一个名为 tableName 的对象 serverName.dbName.dbo.

填充 sqlcmd 变量时,用方括号填充它以生成有效的 4 部分名称:[serverName].[dbName].[dbo].tableName

编辑自动部署案例/visual studio 智能感知:

如果您通过 VS 生成的脚本进行自动部署替换,您可以为链接服务器和数据库创建单独的变量,或者您可以保留一个变量并使用带引号的标识符“欺骗”系统。将您的变量设置为 serverName”.”dbName"."dbo(注意 - 没有开头引号,引号在句点的两边),并在您的脚本中使用 "$(linkedServer)"