Как создать именованный запрос для объединения нескольких источников данных в SSAS 2005? - PullRequest
2 голосов
/ 16 февраля 2010

В электронном разделе книг SQL Server 2005 «Определение именованных запросов в представлении источника данных (службы Analysis Services)» указано:

Именованный запрос также можно использовать для объединения нескольких таблиц базы данных из одного или нескольких источников данных в одну таблицу представления источника данных.

Кто-нибудь знает, где я могу найти примеры или учебные пособия о том, как это можно сделать?

РЕДАКТИРОВАТЬ: Чтобы обеспечить некоторый дополнительный фон ...

Я работаю с проектом служб анализа в SQL Server Business Intelligence Development Studio для SQL Server 2005. Я определил источник данных для каждой из моих баз данных, которые находятся на разных серверах. Я пытаюсь создать именованный запрос, который будет объединением таблицы из каждого источника данных. Проблема в том, что именованный запрос требует от меня выбрать один источник данных для запроса. Запрос выполняется к этому источнику данных, который ничего не знает об источниках данных в моем проекте. Однако, согласно онлайновым книгам по SQL Server 2005, то, что я пытаюсь сделать, должно быть возможным, основываясь на моей цитате выше.

Ответы [ 2 ]

1 голос
/ 17 февраля 2010

Если под «несколькими источниками данных» вы подразумеваете несколько баз данных, то вы можете сделать это, если полностью укажете имя базы данных.

Например, если у меня есть две базы данных, я могу сделать это:

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

Убедитесь, что вы не забыли бит dbo (владелец), иначе он не будет работать.

Единственный другой тип «нескольких источников данных», о котором я знаю, это распределенные запросы , который позволяет выполнять запросы к нескольким удаленным экземплярам сервера SQL:

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
1 голос
/ 16 февраля 2010

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
...