2

在 SQL Server 2005 在线书籍部分“在数据源视图中定义命名查询(分析服务)”中,它指出:

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

有谁知道我在哪里可以找到有关如何完成此操作的示例或教程?

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

我正在使用 SQL Server 2005 的 SQL Server 商业智能开发工作室中的分析服务项目。我为位于不同服务器上的每个数据库定义了一个数据源。我正在尝试创建一个命名查询,它将是来自每个数据源的表的联合。问题是命名查询要求我为查询选择单个数据源。查询是针对这个数据源执行的,它对我的​​项目中的数据源一无所知。但是,根据 SQL Server 2005 在线书籍,根据我上面的引用,我想要完成的事情应该是可能的。

4

2 回答 2

1

MSDN 有这个描述命名查询的链接和这个链接引导你完成创建一个的过程。

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

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
于 2010-02-16T17:43:13.900 回答
1

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

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

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

确保您不要忘记该dbo位(所有者),否则它将无法正常工作。

我知道的唯一另一种“多数据源”是分布式查询,它允许您对 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
于 2010-02-17T14:40:14.247 回答