【问题标题】:Executing an Alter Table statement generated by dynamic sql to a Linked Server将动态 sql 生成的 Alter Table 语句执行到链接服务器
【发布时间】: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


    【解决方案1】:

    您似乎缺少exec。试试:

    exec sp_executesql N'ALTER TABLE FSParallel.dbo.Node ADD ImportIdentity int';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多