Автор: Darren Gosbell
Дата публикации оригинала: 2006-08-06
Источник: Блог Darren Gosbell

Существует не очень много примеров доступных XMLA-запросов, поэтому я подумал, что должен проработать некоторые примеры в моем блоге. Данный первый пример был подсказан вопросом, появившимся в группе новостей Olap, и показывает то, как получить список баз данных и кубов.

Получить список баз данных из Analysis Services довольно просто с помощью простого XMLA запроса, как, например, следующий:

<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
   <RequestType>DBSCHEMA_CATALOGS</RequestType>
   <Restrictions />
   <Properties />
</Discover>

Вы можете подумать, что получить список кубов можно с помощью другого достаточно простого XMLA-запроса, как, например, следующий:

<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
  <RequestType>MDSCHEMA_CUBES</RequestType>
  <Restrictions />
  <Properties />
</Discover>

Если вы запустите эту программу из среды SQL Server Management Studio (SSMS), вы можете заметить интересную вещь, которая стала причиной создания данного поста. Эта причина состоит в том, что вы получаете только список кубов для общей базы данных, несмотря на отсутствие применения ограничений для данного запроса. Итак, что здесь происходит? Ответ состоит в том, что запрос для списка кубов выполняется в контексте соединения, и это соединение используется либо для отдельной базы данных, либо для сервера, если первая база данных не была указана. Таким образом, вы можете или указывать отдельную базу данных, когда вы подсоединяетесь к SSAS, или использовать такой запрос, как следующий.

<Discover xmlns="urn:schemas-microsoft-com:xml-analysis">
  <RequestType>MDSCHEMA_CUBES</RequestType>
  <Restrictions />
  <Properties>
    <PropertyList>
      <Catalog>Adventure Works DW</Catalog>
    </PropertyList>
  </Properties>
</Discover>

Не сразу очевидно, какие свойства в разделе свойств XMLA запроса используются в действительности. Ниже представлена выдержка из Books Online:

Каждое свойство позволяет пользователю контролировать определенный аспект метода Discover или Execute, такой как: определение информации, необходимой для соединения с источником данных, указание формата результата запроса или указания локали, в которой должно производиться форматирование данных.

В вышеуказанном примере XMLA-элемент Catalog устанавливает свойство базы данных соединения, которое выполняет запрос MDSCHEMA_CUBES.


Для удобства отслеживания новых публикаций рекомендуем подписаться на рассылку или на канал RSS.

Читайте также: