SSIS从不同的数据库获取数据

时间:2014-10-09 09:14:35

标签: sql-server-2008 ssis

我有两个数据库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) 并且根据我必须从表B1获得包含A1ID作为参考的数据 所以从表B1我必须得到这里的数据(1,2,3,4)记录如何使用SSIS包

1 个答案:

答案 0 :(得分:0)

我有两种方法。

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

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

    SELECT * 来自dbo.A1 AS A. 在哪里A.Active = 1 按A.ID排序

  3. 显示高级编辑器下的两个来源中,您必须在输入和输出属性标签中:标记IsSorted = True 以获取OLE DB源输出输出列 源输出 A1 A1列的A1源ID列必须具有SortKeyPosition = 1

  4. 添加合并加入组件并将源链接到此。打开编辑器并查看数据是否正确连接,并选择要显示的列
  5. 我添加多播**只是为了使用** Data Viewer 查看数据 enter image description here

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

    创建连接管理器。只需添加 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
    

    就是这样。 enter image description here