Partager via


Введение в SQL Server Analysis Services для разработчика. XMLA DDL.

 

Содержание предыдущей серии

Командой может выступать не только DML, но и DDL-запрос (Create, Alter, Delete, ...) – см. BOL. Этим XMLA превосходит MDX, который вообще не предусматривал в своем синтаксисе никаких DDL-конструкций, кроме, по-моему, создания локального куба. C версии 2005, по крайней мере, базу данных и находящиеся внутри нее объекты стало возможным заскриптовать в XMLA из SSMS по аналогии с реляционным SQL Server, когда кликаешь правой кнопкой по объекту и говоришь Generate Script. Помимо DDL, командой могут выступать другие операции над кубиками (процессить, бэкапить и пр.) Например:

 

<Execute xmlns="urn:schemas-microsoft-com:xml-analysis">

  <Command>

    <Backup xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">

      <Object>

        <DatabaseID>Adventure Works DW 2008R2</DatabaseID>

      </Object>

      <File>c:\Temp\Adventure Works DW.abf</File>

      <AllowOverwrite>true</AllowOverwrite>

    </Backup>

  </Command>

  <Properties />

</Execute>

Скрипт 1

 

image

рис.1

 

К слову, пара замечаний по бэкапу. DatabaseID может, вообще говоря, отличаться от имени базы. Посмотреть его можно разными способами, самый простой сейчас - правокликнуть по базе в SSMS и выбрать Properties:

 

image

Рис.2

 

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

 

image

Рис.3

 

Все, что находится внутри элемента Command запроса XMLA, будь то бэкап или MDX-запрос или что угодно еще, может использоваться в качестве MDX-запроса в SSMS или AdomdCommand. Откройте File -> New -> Analysis Services MDX Query и перенесите в него из XMLA-запроса Скрипт 1 Inner Xml элемента Command:

 

image

рис.4

 

Видите, хотя это не в чистом виде MDX, он тем не менее выполняется. Также скобки <Execute> и <Command> можно отбрасывать на рис.1, выполняя начинку как XMLA-запрос.

Как и для SQL, существуют шаблоны MDX- и XMLA-запросов, позволяющие облегчить на ранних стадиях их постижение.

 

image

рис.5

Особенно полагаться на них я бы все же не советовал. Например, если бы в изучении бэкапа мы ограничились шаблоном, то не узнали бы про существование полезного элемента <AllowOverwrite>. Несмотря на откровенную халтуру в официальной документации я бы рекомендовал BOL в качестве основного ресурса (ссылка приводилась в начале поста), потому что лучшего, к сожалению, пока все равно нет. Допустимые команды XMLA и их структуру можно видеть в разделе Child elements.

Переход на следующую серию

 

Алексей Шуленин