SSIS将值保存为参数

时间:2019-03-15 11:52:02

标签: sql sql-server variables ssis

我在执行sql任务中使用SELECT UpdateDate FROM dbo.log命令。我对此很陌生,所以请忍受我。我想将值存储为变量,然后将其传递到后续数据流的where子句中。我的问题是:

  1. 设置执行SQL任务的正确方法是什么。通常,我具有OLE DB连接并可以通过上面的查询直接输入。结果集设置为单行,然后将其存储到我创建的名为User :: UpdateDate的变量中。由于某种原因,这行不通吗?
  2. 然后我想在数据流中将此日期称为。即。 SELECT * FROM Users WHERE RecordDate > User::UpdateDate。我认为语法与此不同。

我非常感谢您的帮助。提前非常感谢

2 个答案:

答案 0 :(得分:2)

在Execute SQL Task Editor中,配置参数映射,如下所示,显然使用您自己的变量,在本示例中,我正在使用PackageStartTime

enter image description here

然后在您的SQL语句中,使用以下内容:

SELECT * FROM Users WHERE RecordDate > ?

要保存SQL语句中的值,您需要将结果集设置为单行并配置结果集,如下例所示:

enter image description here

答案 1 :(得分:2)

使用ResultSet执行SQL任务

首先,创建类型为System.Date的变量,例如:@[User::UpdateDate]

添加执行SQL任务,选择OLEDB连接,并使用以下命令作为SQL语句:

SELECT TOP 1 UpdateDate FROM dbo.log

ResultSet属性设置为Single Row,然后在ResultSet选项卡中添加具有以下值的行:

ResultName = 0   (which means the first column)
VariableName = @[User::UpdateDate]

其他信息

带有参数化SQL命令的OLEDB源代码

在“数据流任务”中,添加OLEDB源,然后选择Access ModeSQL Command。并编写以下命令:

SELECT * FROM Users WHERE RecordDate > ?

单击Parameters按钮,然后将变量@[User::UpdateDate]映射为第一个参数。

其他信息