我有一种情况需要通过链接服务器向表中添加字段。这个规范是动态的,它是在TQL /存储过程中完成的,但这不能改变。我的代码生成语句就好了,如果我将它复制粘贴到新的SSMS窗口并执行它WORKS ..问题是我需要动态生成语句(我这样做很好,我认为)。那么我需要在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
这会返回以下错误:
Msg 2812,Level 16,State 62,Procedure ETLDynamicImport,Line 244 找不到存储过程'FSParallel.dbo.sp_executesql N'ALTER TABLE Node ADD ImportIdentity int''。
有人可以就此提出建议吗?我正处于一个项目截止日期,并且用谷歌搜索到了这个结果并且无法使其正常工作。