【发布时间】:2015-06-30 07:56:32
【问题描述】:
我有一种情况,我需要通过链接服务器将字段添加到表中。这个规范是动态的,它是在 TQL / 存储过程中完成的,这不能改变。我的代码可以很好地生成语句,如果我将其复制粘贴到新的 SSMS 窗口并执行它就可以了。问题是我需要动态生成语句(我做得很好,我认为)。然后我需要在 SPROC 中执行语句,这部分不起作用。
代码如下:
SET @AlterSQL = @DestinationServerName + '.[' + @DestinationDBName +'].' + @DestinationSchemaName + '.sp_executesql N'' ALTER TABLE '
+ @DestinationTableName + ' ADD ' + @TempColumn + ' int' + CHAR(39)
当我通过 PRINT 语句公开它时,上面会创建它:
addb15.[FSParallel].dbo.sp_executesql N' ALTER TABLE Node ADD ImportIdentity int'
创建我使用的语句后:
EXEC @AlterSQL
这会返回以下错误:
消息 2812,级别 16,状态 62,过程 ETLDynamicImport,第 244 行 找不到存储过程 'FSParallel.dbo.sp_executesql N' ALTER 表节点添加 ImportIdentity int''。
有人可以就此提出建议吗?我在一个项目的截止日期上,已经用谷歌搜索了无止境,只是无法让它工作。
【问题讨论】:
标签: sql dynamic dynamic-sql linked-server alter-table