我有ssis包,它使用SQLserver 2012和 拥有变量:clientLastSync,它保存datetime 并执行任务 查询如下
select * from clnt where opendt > convert(varchar, CAST (@[User::clientLastSync] as date),101)
如果我执行包,则会出现以下错误:
错误:SSIS错误代码DTS_E_OLEDBERROR。 OLE DB错误 发生了。错误代码:0x80040E07。 OLE DB记录可用。 来源:“Microsoft SQL Server Native Client 11.0”Hresult: 0x80040E07描述:“转换日期时转换失败 和/或来自字符串的时间。“。
你能说出这里有什么不对吗?感谢
答案 0 :(得分:0)
您将SSIS中的变量作为?
传递,然后在参数映射窗格中定义变量。
我假设您愚蠢足以将您的日期存储为varchar
,因此您的直接输入SQL在您的执行SQL任务中变为:
SELECT * FROM clnt WHERE opendt > ?;
然后,您需要转到参数映射窗格并单击“添加”。在变量名称列中选择变量的名称(可能是User::clientLastSync
)。然后输入为方向。 DBTIMESTAMP
作为您的数据类型,参数名称为0(如果您有其他参数,它们将按照它们在查询中出现的顺序为1,2,3等)。将Paramter Size保留为-1。
这应该按照你现在的意思运作。