如何查看Azure Data Factory复制数据操作执行的查询语句
解答
你遇到的报错属于ADF自动生成SQL语法缺陷导致的执行失败,报错原文如下:
ErrorCode=SqlOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=A database operation failed. Please search error to get more details.,Source=Microsoft.DataTransfer.ClientLibrary,''Type=System.Data.SqlClient.SqlException,Message=Incorrect syntax near the keyword 'from'.,Source=.Net SqlClient Data Provider,SqlErrorNumber=156,Class=15,ErrorCode=-2146232060,State=1,Errors=[{Class=15,Number=156,State=1,Message=Incorrect syntax near the keyword 'from'.,},],'
完全可以查看Copy Activity实际运行时自动生成的查询语句,操作路径如下:
- 进入对应失败管道运行的活动运行详情页
- 定位到输入详细信息板块下的源端配置节点,其中
query字段的值就是ADF根据你的拖拽配置自动拼接、实际下发到源数据库执行的完整SQL - 也可以直接在源SQL类数据库侧,通过扩展事件、
sys.dm_exec_requests动态管理视图关联ADF访问的会话ID,直接抓取数据库侧实际接收到的执行语句
全拖拽配置场景下该报错的常见诱因
无自定义查询时出现这类语法错误,基本都是配置问题导致生成的SQL存在语法缺陷:
- 源表的列名、表名、架构名使用了
from这类SQL保留关键字,或者名称带空格、特殊字符,ADF自动生成SQL时未正确加[]做标识符转义,导致SQL解析断裂 - 列映射、源端筛选规则配置中存在空值、未填写完成的规则项,拼接后出现类似
select , from 表名、select from where这类缺省字段/条件的残缺SQL - 源数据集或复制活动源配置中,误选中了「自定义查询」模式但查询内容为空,ADF下发了空的/不完整的查询语句
排查修复步骤
- 先从活动运行详情里拿到自动生成的SQL,复制到SSMS等数据库客户端直接执行,就能直观定位到具体的语法错误位置
- 检查源端所有对象、字段的命名,对保留字、特殊字符名称手动加
[]转义;如果是ADF自动转义失效的场景,可以临时切换到自定义查询模式,手动写全带正确转义的查询语句即可 - 逐页检查源配置、列映射、行筛选配置,删除所有空白、未配置完成的规则项,保存后重新运行即可
内容的提问来源于stack exchange,提问作者Daniel Scott
相关产品推荐
相关产品推荐

