查询中的 SSIS 变量

SSIS variables in the query

我有使用 SQLserver 2012 和 有变量:clientLastSync 保存日期时间 并执行任务 查询如下

select * from clnt where opendt > convert(varchar, CAST (@[User::clientLastSync] as date),101)

如果我执行包,出现以下错误:

Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E07. An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80040E07 Description: "Conversion failed when converting date and/or time from character string.".

你能指出这里出了什么问题吗?谢谢

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

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

SELECT * FROM clnt WHERE opendt > ?;

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

现在应该可以正常工作了。