是否可以在OLE DB连接管理器下的SSIS包中使用多个数据源?

时间:2013-11-08 07:07:21

标签: sql-server visual-studio-2008 ssis oledb

该查询仅用于插入新记录。

如何使用此查询?当使用4个不同的数据源(数据库)(如数据库A,B,C和D)时,sql脚本是否位于执行SQL任务:SQL命令任务或OLE DB源:SQL命令任务中。

在解决方案资源管理器下的数据源中,我在一台服务器下添加了四个数据库,这些数据库是数据库A,B,C和D.是否可以在OLE DB连接管理器中添加四个具有四个相应数据源的数据库??

OLE DB connection manager: Database/Data Source A, B, C, D <--- Is this possible??
Data Access Mode:
SQL Command

    SQL Command Text:

    Insert into DWResourceTask.dbo.DimEntity

    select 
    a.EntCode, 
    a.Name, 
    a.Active, 
    a.AccessLevel, 
    a.SiteURN, 
    a.CompanyURN,
    a.SiteName, 
    a.SiteDesc, 
    a.SiteURL
    from 
    (Select e.EntCode, e.Name, e.Active, e.AccessLevel, ss.SiteURN, ss.CompanyURN,
    ss.SiteName, ss.SiteDesc, ss.SiteURL
    from A.dbo.Site ss, A.dbo.LegalEnt e
    where ss.localsiteflag = 1
    and e.active = 1

    UNION ALL
    Select e.EntCode, e.Name, e.Active, e.AccessLevel, ss.SiteURN, ss.CompanyURN,
    ss.SiteName, ss.SiteDesc, ss.SiteURL
    from B.dbo.Site ss, B.dbo.LegalEnt e
    where ss.localsiteflag = 1
    and e.active = 1

    UNION ALL
    Select e.EntCode, e.Name, e.Active, e.AccessLevel, ss.SiteURN, ss.CompanyURN,
    ss.SiteName, ss.SiteDesc, ss.SiteURL
    from C.dbo.Site ss, C.dbo.LegalEnt e
    where ss.localsiteflag = 1
    and e.active = 1

    UNION ALL
    Select e.EntCode, e.Name, e.Active, e.AccessLevel, ss.SiteURN, ss.CompanyURN,
    ss.SiteName, ss.SiteDesc, ss.SiteURL
    from D.dbo.Site ss, D.dbo.LegalEnt e
    where ss.localsiteflag = 1
    and e.active = 1
    )a

    where not exists (select * from DWResourceTask.dbo.DimEntity w
                      where(a.EntCode=w.EntCode
                            and a.Name=w.Name
                            and a.Active=w.Active
                            and a.AccessLevel=w.AccessLevel
                            and a.SiteURN=w.SiteURN
                            and a.CompanyURN=w.CompanyURN
                            and a.SiteName=w.SiteName
                            and a.SiteDesc=w.SiteDesc
                            and a.SiteURL=w.SiteURL))

请帮助。在此先感谢!

3 个答案:

答案 0 :(得分:3)

我将为您详细说明数据流任务。希望这会有所帮助。

  1. 将数据流任务放入工作流程。我的下面称为“将CSV加载到SQL RawData表”。 enter image description here

  2. 在数据流任务中,添加您的来源(来源)和目的地。这些可以是平面文件,数据库连接等。enter image description here

  3. 在原点中,选择您要包含的连接和列。 enter image description here

  4. 打开目的地,然后选择数据将要进入的连接和表格。 enter image description here

  5. 接下来,将原始列映射到目标列。您可以手动执行此操作,也可以通过右键单击和匹配名称来执行此操作。就是那种联系。 enter image description here

  6. 作为整个流程的一部分,为您的其他来源和目的地重复此过程。

  7. 测试您的SSIS包,然后部署。

答案 1 :(得分:0)

这不是您使用Execute SQL Task所取得的成就!但是可以使用Data Flow Task轻松完成,而这只是SSIS的主要思想 - 避免使用这种复杂的SQL表达式。

  1. 为每个数据库创建连接A,B,C,D,DWResourceTask,目的地

  2. 为每个数据库放置单独的数据源:A,B,C,D。填写select语句,并Union All全部。

  3. where not exists部分可以通过查找DWResourceTask.dbo.DimEntity来完成。 No match output会为您提供正确的记录。

  4. 将数据目标放在行的上方。

答案 2 :(得分:0)

我创建了一个查看两个源的视图,然后视图成为我的单一来源。

我宁愿让SQL Server为我做好工作,也不要让SSIS进行数据传输。