使用ADF自托管集成运行时(SHIR)时记录数缺失问题求助
ADF自托管集成运行时(SHIR)连接云端DB2记录数不匹配问题排查步骤
1. 验证VPN隧道稳定性
- 检查VPN隧道的丢包率、延迟和MTU配置:大数据集传输时,MTU不匹配可能导致数据包丢失,中断数据拉取流程。
- 在SHIR服务器上,执行查询期间持续用
ping或traceroute测试云端DB2端点,观察是否存在间歇性连接中断。 - 确认VPN超时设置:避免空闲超时在数据拉取过程中提前切断连接。
2. 检查SHIR的DB2驱动配置
- 确认SHIR上的DB2驱动版本:过时驱动可能与云端DB2实例存在兼容性问题,建议升级至最新的IBM Data Server Driver for ODBC/CLI。
- 调整ADF复制活动的
fetchSize:默认取值可能过小,在复制活动的源高级选项中设置该参数,匹配DBVisualizer使用的较大fetch size。 - 启用驱动级日志:修改SHIR上的
db2cli.ini文件,开启详细日志,查找"fetch failed"或连接重置等错误信息。
3. 对比查询执行上下文
- 统一事务隔离级别:在查询中显式设置隔离级别(例如
SET TRANSACTION ISOLATION LEVEL READ COMMITTED),确保与DBVisualizer的配置一致。 - 验证查询一致性:确保ADF和DBVisualizer执行完全相同的查询,包括时区、会话函数(如
CURRENT_DATE与SYSDATE的差异可能源于时区不匹配)。 - 使用静态测试查询:替换动态筛选条件为固定查询,返回已知数量的记录,排除筛选逻辑本身的问题。
4. 分析SHIR和ADF执行日志
- 开启SHIR详细日志:进入ADF -> 集成运行时 -> 目标SHIR -> 编辑 -> 日志 -> 设置日志级别为
Verbose,查看默认路径C:\Program Files\Microsoft Integration Runtime\5.0\Shared\Log下的日志,寻找数据拉取或连接相关错误。 - 查看ADF复制活动日志:在活动运行详情中,检查
sourceRowsRead指标与预期记录数的差异,寻找"部分数据读取"或"连接提前关闭"等警告。 - 检查云端DB2服务器日志:查看与SHIR连接相关的日志,是否存在连接中断、拉取错误或资源限制(如游标大小上限)的记录。
5. 控制数据集大小测试
- 验证大小阈值假设:执行返回略低于和略高于问题KB大小的数据集的查询,记录记录数何时开始减少。
- 拆分查询:将大查询拆分为多个小批次(例如使用
LIMIT/OFFSET或日期范围),分别通过ADF执行。若所有批次都返回正确记录数,则问题可能出在VPN下的大数据集处理。 - 尝试直接连接(若可行):临时将SHIR服务器IP加入云端DB2防火墙白名单,绕过VPN测试,以此隔离VPN是否为根因。
6. 检查SHIR资源限制
- 监控SHIR服务器资源:查询执行期间,观察SHIR机器的CPU、内存和网络使用率,若资源耗尽,SHIR可能提前终止数据拉取。
- 调整SHIR内存分配:若SHIR服务受限于内存配额,处理大数据集时需适当调整内存设置。
内容的提问来源于stack exchange,提问作者rdhaundiyal
相关产品推荐
相关产品推荐

