将 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)"
我有一个 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)"