将sqlcmd参数设置为linkedserver

kognpnkq  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(346)

我有一个VisualStudioSQL项目,需要将sqlcmd参数设置为链接服务器的值。
假设项目中有以下查询:

select * from tableName

我需要将此更改为:

select * from [$(linkedServer)].tableName

其中linkedserver=servername.dbname.dbo这将转换为:

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

导致错误:
对象名“servername.dbname.dbo.tablename”无效。
但是,以下查询已成功运行: select * from serverName.dbName.dbo.tableName .
有没有办法移除支架或其他解决方法?括号是必需的,因为值是作为sqlcmd参数传递的。

lndjwyie

lndjwyie1#

为什么 [serverName.dbName.dbo].tableName 失败是因为sql将处理 [ 以及 ] 作为单个标识符。所以它在寻找一个叫做 tableName 在一个叫做 serverName.dbName.dbo .
填充sqlcmd变量时,请使用方括号将其填充到位,以便生成有效的4部分名称: [serverName].[dbName].[dbo].tableName 针对自动部署/visual studio intellisense的情况进行编辑:
如果您是通过script vs generates执行自动部署替换,那么可以为链接的服务器和数据库创建单独的变量,也可以保留一个变量,并通过使用带引号的标识符来“欺骗”系统。将变量设置为 serverName”.”dbName"."dbo (注意-没有开始引用,引用句点的两边),并且在脚本中使用 "$(linkedServer)"

相关问题