使用Azure Data Factory从本地VM的Sybase IQ拉取数据至Blob时遇错
Azure Data Factory拉取Sybase IQ数据至Blob存储报错解决思路
问题背景
- 操作场景:通过Azure Data Factory将本地虚拟机(OnPrem VM)上的Sybase IQ数据库数据同步到Azure Blob存储
- 复制活动配置:
- 源:已通过自托管集成运行时(SHIR)成功连接的Sybase IQ数据库
- 源查询:
select * from [目标表] - 数据预览功能可正常使用
- 目标:Azure Blob存储(CSV分隔格式)
错误详情
原始错误日志
Failure happened on 'Source' side. ErrorCode=UserErrorFailedFileOperation,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=The file operation is failed, upload file failed at path: 'BlobPath/tablename.csv'.,Source=Microsoft.DataTransfer.Common,''Type=Microsoft.Data.Mashup.MashupValueException,Message=Sybase SQL Anywhere: Invalid data conversion,Source=Microsoft.MashupEngine,'
中文翻译
错误发生在「源」端。错误代码:UserErrorFailedFileOperation
异常类型:Microsoft.DataTransfer.Common.Shared.HybridDeliveryException
消息:文件操作失败,上传文件至路径 'BlobPath/tablename.csv' 失败
内部异常:Microsoft.Data.Mashup.MashupValueException
消息:Sybase SQL Anywhere:无效的数据转换
已尝试方案
- 重新配置、安装自托管集成运行时(SHIR)
- 重新创建链接服务
- 重新创建数据集
- 在本地VM上安装SAP SQL Anywhere 16/17版本
排查与解决建议
定位不兼容数据字段
错误核心是「无效的数据转换」,建议先放弃select *,改为只选择部分基础类型字段(如int、varchar、date)进行测试,逐步排查出导致转换失败的字段。常见问题字段包括:- 二进制类型(如BINARY、VARBINARY)
- 大对象类型(如TEXT、BLOB)
- Sybase特定日期时间格式(需用
CONVERT函数转为标准字符串,例如CONVERT(VARCHAR(20), create_time, 20)) - 自定义数据类型
验证驱动版本匹配
确保本地VM上安装的SAP SQL Anywhere驱动版本与Sybase IQ服务器版本一致,同时确认SHIR使用的是对应版本的驱动(可在SHIR配置界面查看驱动加载情况)。本地验证数据导出
在本地VM上使用Sybase客户端执行相同查询,手动将结果导出为CSV文件,检查是否能正常导出。如果本地导出也失败,说明问题出在数据库数据本身或驱动转换逻辑,需针对性处理数据。开启复制活动详细日志
在复制活动的「监控」设置中开启详细错误日志,查看具体是哪一行数据、哪个字段触发了转换失败,精准定位问题。
内容的提问来源于stack exchange,提问作者Pranjal
相关产品推荐
相关产品推荐

