Sql server 2008 SSIS-在多个并行任务中使用表变量
我正在使用以下逻辑编写T-SQL脚本:Sql server 2008 SSIS-在多个并行任务中使用表变量,sql-server-2008,ssis,parallel-processing,table-variable,Sql Server 2008,Ssis,Parallel Processing,Table Variable,我正在使用以下逻辑编写T-SQL脚本: declare @tbl table(id int) insert @tbl select distinct id -- <-- this takes about 3 minutes from link1.some_table where <some_conditions> insert some_local_table(field1, field2, fieldN) -- <-- this takes about 3
declare @tbl table(id int)
insert @tbl select distinct id -- <-- this takes about 3 minutes
from link1.some_table
where <some_conditions>
insert some_local_table(field1, field2, fieldN) -- <-- this takes about 30 minutes
select field1, field2, fieldN
from link2.some_table
where id in (select id from @tbl)
and <some conditions>
insert some_OTHER_local_table(field1, field2, fieldN) -- <-- another 30 minutes
select field1, field2, fieldN
from link2.some_OTHER_table
where id in (select id from @tbl)
and <some conditions>
insert some_YET_OTHER_local_table(field1, field2, fieldN) -- <-- another 30m, and so on
select field1, field2, fieldN
from link2.some_YET_OTHER_table
where id in (select id from @tbl)
and <some conditions>
declare@tbl表(id int)
insert@tbl select distinct id--您不能在每个任务中使用子查询而不是表变量吗
insert some_local_table(field1, field2, fieldN)
select field1, field2, fieldN
from link2.some_table
where id in (
select id
from link1.some_table
where <some_conditions>
)
and <some conditions>
。。。然后
declare @tbl table(id int)
insert @tbl select distinct id -- <-- this takes about 3 minutes
from link1.some_table
where <some_conditions>
insert some_OTHER_local_table(field1, field2, fieldN) -- <-- another 30 minutes
select field1, field2, fieldN
from link2.some_OTHER_table
where id in (select id from @tbl)
and <some conditions>
declare@tbl表(id int)
插入@tbl select distinct id——谢谢Ann L。在各个任务之间复制变量肯定会奏效。然而,有一个小风险,即数据将在link1.0表中发生变化,导致查询之间的结果不一致。现在,在本地表而不是本地变量中缓存数据是很诱人的(我们在本地得到一个静态@tbl数据快照),但是我害怕在链接的服务器表和本地表之间编写一个连接子句-远程查询已经非常复杂(它实际上是一个视图)。我会尝试一下,如果它有效,我会把你的答案标记为正确。再次感谢!可以使用全局临时表而不是表变量。甚至是在包的末尾截断的永久表。
declare @tbl table(id int)
insert @tbl select distinct id -- <-- this takes about 3 minutes
from link1.some_table
where <some_conditions>
insert some_OTHER_local_table(field1, field2, fieldN) -- <-- another 30 minutes
select field1, field2, fieldN
from link2.some_OTHER_table
where id in (select id from @tbl)
and <some conditions>