代码之家  ›  专栏  ›  技术社区  ›  Eric Weilnau

如何在SSAS2005中创建一个命名查询来连接多个数据源?

  •  2
  • Eric Weilnau  · 技术社区  · 16 年前

    命名查询还可以用于将一个或多个数据源中的多个数据库表联接到单个数据源视图表中。

    有人知道我在哪里可以找到关于如何做到这一点的例子或教程吗?

    编辑:提供一些额外的背景。。。

    我正在SQLServerBusinessIntelligenceDevelopmentStudio for SQLServer2005中使用analysis services项目。我为位于不同服务器上的每个数据库定义了一个数据源。我试图创建一个命名查询,它将是来自每个数据源的表的并集。问题是,命名查询要求我为查询选择单个数据源。查询是针对这个数据源执行的,这个数据源对我的项目中的数据源一无所知。然而,根据SQLServer2005联机丛书,基于我上面的引述,我试图完成的应该是可能的。

    2 回复  |  直到 16 年前
        1
  •  1
  •   rosscj2533    16 年前

    MSDN有 this 描述命名查询和 this

    Edit:我认为要使用多个数据源,在创建查询时需要完全限定表以命中其他数据源,如下所示:

    SELECT user_id, first_name, 'DB1' as DB FROM users
    UNION
    SELECT user_id, first_name, 'DB2' as DB FROM Database2Name.dbo.users
    

    得到这样的结果

    user_id    first_name    DB
    1          Bob           DB1
    2          Joe           DB1
    11         Greg          DB2
    12         Mark          DB2
    
        2
  •  1
  •   Justin    16 年前

    如果“多个数据源”是指多个数据库,那么如果完全限定了数据库名称,就可以这样做。

    例如,如果我有两个数据库,我可以这样做:

    SELECT * FROM DatabaseA.dbo.SomeTable 
    JOIN DatabaseB.dbo.OtherTable
    ON DatabaseA.dbo.SomeTable.Id = DatabaseB.dbo.OtherTable.Id
    

    dbo 咬(主人),否则就不行了。

    我知道的唯一其他类型的“多数据源”是 distributed queries 它允许您在多个sql server远程实例上执行查询:

    sp_addlinkedserver 'server\instance'
    
    SELECT * FROM [server\instance].DatabaseA.dbo.SomeTable 
    JOIN DatabaseB.dbo.OtherTable
    ON [server\instance].DatabaseA.dbo.SomeTable.Id = DatabaseB.dbo.OtherTable.Id
    
    推荐文章