You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSIS传递datetime类型变量到存储过程报错问题求助

SSIS存储过程传参datetime类型报错排查方案
  • 首先修正SSIS侧变量类型:将名为time的变量数据类型设置为DateTime(不要选择Date、Time这类拆分存储的类型),从根源避免类型映射匹配错误。SSIS中日期的显示格式为MM/DD/YYYY仅为界面展示规则,变量本身是结构化存储的,和实际环境使用的YYYY/MM/DD格式无关,无需做显示格式的额外调整。
  • 调整第一个执行SQL任务的输出参数配置:对应输出bookmark值的参数映射项,数据类型强制选择DBTIMESTAMP,如果使用OLE DB连接管理器需要确认参数序数和存储过程参数顺序一致,使用ADO.NET连接则需要参数名和存储过程定义的输出参数名完全匹配。
  • 修正第二个执行SQL任务的入参配置:@bookmark对应的变量time的参数映射项,数据类型统一选择DBTIMESTAMP,参数方向设置为Input,确认参数序数/参数名和SQL语句中的问号占位顺序匹配。
  • 临时兼容方案:如果上述调整后仍报错,可以将变量转成标准日期字符串传递,将第二个存储过程的执行语句修改为:
    exec MyProcedure2 @var1 = ?, @var2 = ?, @bookmark = CONVERT(datetime, ?, 111)
    
    同时将第三个问号对应的time变量映射的数据类型改为STRING,长度设置为20即可,其中111是SQL Server对应YYYY/MM/DD格式的转换编码,适配你环境的日期格式要求。

你直接在SQL Server端调用存储过程正常的原因是本地调用时参数为原生datetime类型,无需跨进程做OLE DB/ODBC类型映射,不会出现类型不兼容的问题。

内容的提问来源于stack exchange,提问作者Radek Gąska

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:51:04