SSIS SQL TASK MAX(DATE) 到 DATA FLOW 中的变量
SSIS SQL TASK MAX(DATE) to Variable in DATA FLOW
好的,这看起来应该非常简单,但我想不通。我在网上看到的每个地方都说要创建临时 tables 和 VB 脚本,我不敢相信我必须这样做。我的目标是将所有记录插入 table 中,日期晚于该目标 table 中的最大日期。
更新 2 table 位于两个不同的非链接 SQL 数据库中
所以:
Select @[User::Dated] = MAX(Dateof) from Table2
Insert into Table2
Select *
From Table1
Where DateOf > @[User::Dated]
我正尝试在 SSIS 中执行此操作。我声明了一个变量,SQL 执行步骤看起来像是将单行输出分配给它。但是当我进入数据流时,它没有给我选择的参数,当我强制使用项目范围内的已知参数时,它说没有参数存在
如果需要,您可以在单个 SQL 任务中执行此操作:
Insert into Table2
Select *
From Table1
Where DateOf > (Select MAX(Dateof) from Table2)
如果你想在控制流中使用多个 Execute SQL Task
项,或者想在数据流中使用参数,你必须为你的 MAX()
查询到 Single Row
,然后从 General
移动到 Result Set
和 Add
为您的结果集占用的新变量。
要通过 Execute SQL Task
在 INSERT INTO....
查询中使用该变量,您需要为每个参数构建一个 ?
的查询,并将它们映射到参数映射部分。如果一个变量在一个查询中被多次使用,那么使用存储过程是最简单的,所以你可以简单地在SSIS中传递相关参数。
创建两个 OLE DB 数据源,每个数据源指向您的两个数据库。
创建一个名为 max_date 的变量并将其数据类型设置为字符串。
在控制流上放置一个执行 SQL 任务,将其连接类型更改为 OLE DB,并为连接 select 包含 Table2 的数据源的名称。将结果集设置为单行。为 SQL 语句添加以下内容:
SELECT CAST(MAX(Dateof) AS VARCHAR) AS max_date FROM Table2
转到“结果集”窗格,单击“添加”并输入以下内容:
Result Name: max_date
Variable Name: User::max_date
您现在可以在表达式中使用 max_date 变量来创建 SQL 语句,例如您可以在另一个使用第二个数据的执行 SQL 任务中使用它连接方式如下:
"INSERT INTO Table2
SELECT *
FROM Table1
WHERE DateOf > '" + @[User::max_date] + "'"
或者在数据流中的 OLE DB 源中,如下所示:
"SELECT *
FROM Table1
WHERE DateOf > '" + @[User::max_date] + "'"
好的,这看起来应该非常简单,但我想不通。我在网上看到的每个地方都说要创建临时 tables 和 VB 脚本,我不敢相信我必须这样做。我的目标是将所有记录插入 table 中,日期晚于该目标 table 中的最大日期。 更新 2 table 位于两个不同的非链接 SQL 数据库中 所以:
Select @[User::Dated] = MAX(Dateof) from Table2
Insert into Table2
Select *
From Table1
Where DateOf > @[User::Dated]
我正尝试在 SSIS 中执行此操作。我声明了一个变量,SQL 执行步骤看起来像是将单行输出分配给它。但是当我进入数据流时,它没有给我选择的参数,当我强制使用项目范围内的已知参数时,它说没有参数存在
如果需要,您可以在单个 SQL 任务中执行此操作:
Insert into Table2
Select *
From Table1
Where DateOf > (Select MAX(Dateof) from Table2)
如果你想在控制流中使用多个 Execute SQL Task
项,或者想在数据流中使用参数,你必须为你的 MAX()
查询到 Single Row
,然后从 General
移动到 Result Set
和 Add
为您的结果集占用的新变量。
要通过 Execute SQL Task
在 INSERT INTO....
查询中使用该变量,您需要为每个参数构建一个 ?
的查询,并将它们映射到参数映射部分。如果一个变量在一个查询中被多次使用,那么使用存储过程是最简单的,所以你可以简单地在SSIS中传递相关参数。
创建两个 OLE DB 数据源,每个数据源指向您的两个数据库。
创建一个名为 max_date 的变量并将其数据类型设置为字符串。
在控制流上放置一个执行 SQL 任务,将其连接类型更改为 OLE DB,并为连接 select 包含 Table2 的数据源的名称。将结果集设置为单行。为 SQL 语句添加以下内容:
SELECT CAST(MAX(Dateof) AS VARCHAR) AS max_date FROM Table2
转到“结果集”窗格,单击“添加”并输入以下内容:
Result Name: max_date
Variable Name: User::max_date
您现在可以在表达式中使用 max_date 变量来创建 SQL 语句,例如您可以在另一个使用第二个数据的执行 SQL 任务中使用它连接方式如下:
"INSERT INTO Table2
SELECT *
FROM Table1
WHERE DateOf > '" + @[User::max_date] + "'"
或者在数据流中的 OLE DB 源中,如下所示:
"SELECT *
FROM Table1
WHERE DateOf > '" + @[User::max_date] + "'"