使用SSIS创建临时存储并在查询中使用它

时间:2014-05-28 21:02:09

标签: sql sql-server ssis sql-server-2008-r2

我会尽量保持这一点,我有一个数据源( DBX )和一个源/目标( DBY ),两个服务器都不同。我有DBX的读权限和DBY的读/写权限。在SSMS中,工作流程如下所示:

  1. 从DBX中获取TblA的Id列表..

    SELECT Id INTO #IdTable FROM TblA WHERE....

  2. 从DBX中的TblB获取数据..

    Select fields From TblB b join #IdTable a on b.Id = a.Id

  3. 然后我将数据保存到DBY中,所以这部分是直截了当的。

    问题是,在 SSIS DataFlow 中创建临时表并加入它的最佳方法是什么?我正在考虑使用 DataReader目的地,我还看了一下 Recordset Destination ,但找不到明显的方法。

    我已经看到了使用临时表How to create a temporary table in SSIS control flow task and then use it in data flow task?的这种解决方案,但是我不确定包将运行的系统帐户是否具有创建临时表的权限。

1 个答案:

答案 0 :(得分:1)

我希望以下原型能够发挥作用。

enter image description here

<强>步骤:

1. Create an SSIS package with a DFT
2. Add two connection managers to package, point them to 
    a. SourceServer.DBX.TblA and 
    b. DestinationServer.DBY.TblB
3. In the DFT create an OLEDB source (If not OLEDB, the type of your kind) with
    SELECT Id INTO #IdTable FROM TblA WHERE....
4. Add a LookUp Transformation after the source.
   In the genaral tab of lookUp Transformation, give DestinationServer.DBY.TblB
   In columns tab, give join column, (rest is self explainatory.)
5. You will get your desired output from LookUp Transformation output pipelines. 
   If required join the outputs together with a UnionAll transformation and point to your Destination.