【问题标题】:SSIS get data from different databaseSSIS从不同的数据库中获取数据
【发布时间】:2014-10-09 09:14:34
【问题描述】:

我有两个数据库 A 和 B 在数据库 A 中,我有一个表 A1,在数据库 B 中,我有一个表 B1 我在 A1 中有以下数据

ID     |    Name    | Active
1      | Alpha      | 1
2      | Bravo      | 1
3      | Charlie    | 1
4      | Delta      | 0
5      | Echo       | 0

我在B1中有以下数据

ID     |A1ID     |   Name
1      | 1       | Mike
2      | 1       | November
3      | 2       | Oscar
4      | 3       | Romeo
5      | 4       | Sierra

我需要检查表 A1 中的所有活动 (1,2,3) 并据此我必须从包含 A1ID 的表 B1 中获取数据作为参考 所以从表 B1 我必须在这里获取数据 (1,2,3,4) 记录我如何使用 SSIS 包来做到这一点

【问题讨论】:

    标签: sql-server-2008 ssis


    【解决方案1】:

    我想到了两种方法。

    如果您还有不同的服务器,第一种方法:

    1. 创建 2 个连接管理器:一个用于 A1,第二个用于 B2。
    2. 将 2 个 OLE DB 源 组件放入 数据流。对于 B2 源选择 B2 表,至于 A1 输入如下代码:

      选择 * 从 dbo.A1 作为一个 WHERE A.Active = 1 按 A.ID 订购

    3. 显示高级编辑器 下的两个源中,您必须在 输入和输出属性 选项卡中:标记 IsSorted = True 用于 OLE DB 源输出 并且在 for OLE DB Source OutputOutput Columns 下 for A1 source ID column for B1 A1ID column must have SortKeyPosition = 1

    4. 添加 Merge Join 组件并将源链接到此。打开编辑器并查看数据是否正确连接,然后选择要显示的列

    我添加 Multicast ** 只是为了使用 **Data Viewer 查看数据

    如果在同一台服务器上有数据,第二种方法:

    创建连接管理器。只需添加 Ole DB 源代码,将这段代码放入其中:

    SELECT A.ID, A.Name AS NameA1, B.NAME AS NameB1
    FROM ForTests.dbo.A1 AS A
    INNER JOIN FileSearchTest.dbo.B1 AS B
        ON A.ID = B.A1ID
    WHERE A.Active = 1
    

    就是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      相关资源
      最近更新 更多