查询中的SSIS变量

时间:2018-02-13 11:46:16

标签: sql-server ssis-2012

我有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描述:“转换日期时转换失败   和/或来自字符串的时间。“。

你能说出这里有什么不对吗?感谢

1 个答案:

答案 0 :(得分:0)

您将SSIS中的变量作为?传递,然后在参数映射窗格中定义变量。

假设愚蠢足以将您的日期存储为varchar,因此您的直接输入SQL在您的执行SQL任务中变为:

SELECT * FROM clnt WHERE opendt > ?;

然后,您需要转到参数映射窗格并单击“添加”。在变量名称列中选择变量的名称(可能是User::clientLastSync)。然后输入为方向。 DBTIMESTAMP作为您的数据类型,参数名称为0(如果您有其他参数,它们将按照它们在查询中出现的顺序为1,2,3等)。将Paramter Size保留为-1。

这应该按照你现在的意思运作。