KingswaySoft Premium Lookup检索日期字段抛出异常问题求助
问题根因
这个报错和SSIS包LocalID、CRM用户语言/日期格式配置无关,是你当前使用的v21.2.0.31501版本Premium Lookup组件的已知时区解析bug:
你查询的new_lastsales是Dataverse/Dynamics 365中的日期字段,当字段行为配置为*UserLocal(用户本地)*时,组件会自动将存储的UTC时间转换为SSIS运行账号对应时区的本地时间。报错里提到的05/11/2017 23:00:00刚好是对应时区的夏令时跳变临界点——该时间点在本地时区实际不存在(时钟跳转直接跳过了这个时刻),旧版本组件的转换逻辑没有对这类边界情况做兼容,直接抛出ArgumentOutOfRangeException。你之前改的区域、格式类配置都不会影响组件内部的时区转换逻辑,自然无法解决问题。
修复方案
按改动量从小到大排序,可按需选择:
- 直接修改连接的日期解析配置
打开Premium Lookup绑定的CRM/CDS连接管理器,进入高级设置页,将日期时间转换模式从默认的「自动转换为本地时间」改为「直接返回UTC时间」,保存后重新执行包验证即可。如果业务不需要基于运行环境做时区偏移计算,这是成本最低的修复方式。 - 绕过组件的日期强转逻辑
修改现有FetchXML,额外返回该日期字段的格式化字符串值,避开组件自动做DateTime类型转换,后续在数据流中通过派生列组件自行解析日期即可,调整后的FetchXML参考:
<fetch mapping="logical" count="1" page="1"> <entity name="new_erpcustomer"> <attribute name="new_lastsales" /> <!-- 新增别名返回字符串格式的日期值,绕过组件自动类型转换 --> <attribute name="new_lastsales" alias="new_lastsales_str" /> <filter type="and"> <condition attribute="new_erpcustomercode" operator="eq" value="@[Column::ERPCode]" /> </filter> </entity> </fetch>
配置组件输出字段时,将new_lastsales_str的类型设置为DT_WSTR字符串类型,不要映射为日期类型,避免触发转换逻辑。
- 升级组件版本
该夏令时转换的兼容问题在v21.2后续补丁包、v22.x及以上正式版本中已经修复,卸载当前安装的v21.2.0.31501版本,安装最新稳定版的SSIS Integration Toolkit即可,不需要修改现有包的任何配置。 - 调整字段的日期行为配置
如果new_lastsales本身是不需要按时区换算的业务日期(比如固定的交易日期、对账日期,和登录用户时区无关),可以在Dynamics 365自定义页面将该字段的行为从「用户本地」改为「时区独立」或「仅日期」,组件不会对这类字段做时区转换,也不会触发报错。注意该修改会影响所有引用该字段的业务逻辑,操作前必须完成全链路影响评估。
验证建议
修改后先单独用报错对应的ERPCode做单条记录调试,确认new_lastsales字段返回正常后再执行全量任务,避免批量跑数时中断。
内容的提问来源于stack exchange,提问作者MChem
相关产品推荐
相关产品推荐

