You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

拼接含GO的SQL Server动态SQL触发语法错误,求定位问题

问题分析与解决

错误原因

GO 是SQL Server Management Studio(SSMS)等客户端工具的批处理分隔符,它不属于T-SQL的原生语法。当你通过EXEC()执行动态SQL时,SQL Server引擎会把整个字符串当作单一T-SQL批处理解析,GO在这个上下文里是无效语法,因此触发报错。

修正方案

直接从动态SQL字符串中移除GO即可——你的代码里只有一条sp_addextendedproperty执行语句,不需要拆分批处理。

修正后的代码:

DECLARE @sql varchar(4000) =
'EXEC sys.sp_addextendedproperty @name=N''MS_Description'', @value=N''' + 'описание' + ''', @level0type=N''SCHEMA'',@level0name=N''' + 'rudata_r2' + ''', @level1type=N''TABLE'',@level1name=N''' + 'Subscriptions' + ''', @level2type=N''COLUMN'',@level2name=N''' + 'id' + ''''

EXEC(@sql)

补充说明

如果后续需要在动态SQL中拆分多个批处理,不能用GO,可以选择:

  • 多次调用EXEC(),每个批处理对应一次执行
  • 使用sp_executesql(推荐,支持参数化,安全性更高)分别执行各批处理

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 00:41:14