ADF复制活动Sink端失败,请求获取更详细错误排查信息
复制活动从本地SQL数据库同步到Azure SQL Database(Synapse)时失败,报错信息如下:
Failure happened on 'Sink' side. 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=PdwManagedToNativeInteropException ErrorNumber: 46724, MajorCode: 467, MinorCode: 24, Severity: 20, State: 2, Exception of type 'Microsoft.SqlServer.DataWarehouse.Tds.PdwManagedToNativeInteropException' was thrown.,Source=.Net SqlClient Data Provider,SqlErrorNumber=100000,Class=16,ErrorCode=-2146232060,State=1,Errors=[{Class=16,Number=100000,State=1,Message=PdwManagedToNativeInteropException ErrorNumber: 46724, MajorCode: 467, MinorCode: 24, Severity: 20, State: 2, Exception of type 'Microsoft.SqlServer.DataWarehouse.Tds.PdwManagedToNativeInteropException' was thrown.,},],'
本次仅完成80397行复制(总行数83972行),已尝试将并行度设为1、添加ORDER BY定位异常行,但排除疑似行后仍报相同错误,单独复制该行却可成功。以下是获取更详细错误信息的排查方法:
启用ADF复制活动详细日志
在复制活动的日志设置中,将日志级别调整为Verbose,并开启诊断日志。日志会存储到指定的存储账户容器中,可查看每一行的处理细节,包括失败行的具体数据、转换过程中的异常,精准定位问题节点。配置Synapse SQL扩展事件跟踪
在Azure Synapse SQL中创建扩展事件会话,跟踪sql_statement_starting、sql_statement_completed和error_reported事件,过滤目标表的写入操作。复制活动执行时,扩展事件会捕获Sink端执行的SQL语句、参数值及完整错误堆栈,排查数据格式、约束冲突或底层交互问题。使用ADF数据预览与验证功能
对源数据集开启数据预览,检查剩余未复制的3575行数据的特殊字符、字段长度、空值等情况;同时添加数据验证活动,在复制前校验源数据与目标表的Schema、数据规则,提前发现不兼容问题。调整复制活动错误处理设置
在复制活动的错误处理中,设置容错行数为大于0的值(如100),并开启保存错误行,指定存储路径保存失败行数据。复制活动会跳过错误行继续执行,同时将失败行的原始数据保存到指定位置,对比成功行找出差异。
内容的提问来源于stack exchange,提问作者Mike Fleming

