Azure Data Factory脚本活动GO关键字报错问题及解决咨询
问题根源
GO不是T-SQL的正式语法,它只是SQL Server客户端工具(比如SSMS)用来分隔执行批次的标记。ADF执行SQL脚本时会把整个内容当作单条T-SQL语句解析,自然会抛出语法错误。
可行解决方案
针对带大量GO的巨型脚本,有几种实用处理方式:
拆分脚本为多个SQL活动
把每个GO分隔开的代码块,拆成独立的ADF SQL活动,按顺序串联执行。这样每个批次单独提交,能保证前一批次创建的对象被后续批次正常引用。如果脚本是自动生成的,可以用PowerShell写个简单脚本按GO拆分,批量生成对应的ADF活动配置。启用SQLCMD模式执行
ADF的SQL脚本活动支持开启SQLCMD模式,开启后就能识别GO分隔符,自动按批次执行脚本。操作时在活动的高级设置里找到该选项打开即可。注意:启用后脚本里的SQLCMD命令也会被解析,要确保没有冲突的语法。封装为存储过程(可选)
如果脚本需要重复执行,可以把整个逻辑封装成SQL Server存储过程,在存储过程内部用EXEC('批次代码')的方式分批次执行,或者利用存储过程的天然批次特性。之后在ADF里直接调用这个存储过程就行,维护起来更方便。
内容的提问来源于stack exchange,提问作者NibblyPig
相关产品推荐
相关产品推荐

