SSIS SQL Execute Task存储变量报错:不支持的结果集绑定数据类型
解决SSIS读取Excel日期到变量的类型不兼容问题
执行SQL任务查询Excel表的最新日期,语句为:
select max([update_date]) as newestdate from [Sheet1$]
将结果绑定到User::newdate(datetime类型)变量时,报错:
Unsupported data type on result set binding newestdate
解决方案
1. 强制转换查询结果的类型
修改SQL语句,显式将聚合后的日期转换为datetime类型,确保SSIS能识别:
SELECT CAST(MAX([update_date]) AS DATETIME) AS newestdate FROM [Sheet1$]
如果使用旧版Excel驱动,也可以尝试CONVERT函数:
SELECT CONVERT(DATETIME, MAX([update_date])) AS newestdate FROM [Sheet1$]
2. 调整Excel连接管理器属性
- 打开Excel连接管理器的属性,编辑
Extended Properties,添加IMEX=1参数,帮助驱动正确识别列类型:Excel 12.0 Xml;HDR=YES;IMEX=1; - 修改后右键点击数据源,选择刷新,重新加载元数据。
3. 用字符串变量中转
- 将
User::newdate的类型改为String,执行SQL任务绑定结果到该变量。 - 在后续需要使用日期的步骤中,用表达式转换为datetime类型:
(DT_DBTIMESTAMP)@[User::newdate]
4. 验证Excel列的一致性
- 打开Excel文件,选中
update_date整列,设置为短日期格式,确保所有单元格都是纯日期类型,没有混合文本格式的日期值。保存文件后重新运行SSIS包。
内容的提问来源于stack exchange,提问作者Nikola Paveljić
相关产品推荐
相关产品推荐

