Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Командой может выступать не только 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
рис.1
К слову, пара замечаний по бэкапу. DatabaseID может, вообще говоря, отличаться от имени базы. Посмотреть его можно разными способами, самый простой сейчас - правокликнуть по базе в SSMS и выбрать Properties:
Рис.2
Если не указывать путь для файла бэкапа, он забэкапится в бэкапную директорию по умолчанию, задаваемую в свойствах аналитического сервера:
Рис.3
Все, что находится внутри элемента Command запроса XMLA, будь то бэкап или MDX-запрос или что угодно еще, может использоваться в качестве MDX-запроса в SSMS или AdomdCommand. Откройте File -> New -> Analysis Services MDX Query и перенесите в него из XMLA-запроса Скрипт 1 Inner Xml элемента Command:
рис.4
Видите, хотя это не в чистом виде MDX, он тем не менее выполняется. Также скобки <Execute> и <Command> можно отбрасывать на рис.1, выполняя начинку как XMLA-запрос.
Как и для SQL, существуют шаблоны MDX- и XMLA-запросов, позволяющие облегчить на ранних стадиях их постижение.
рис.5
Особенно полагаться на них я бы все же не советовал. Например, если бы в изучении бэкапа мы ограничились шаблоном, то не узнали бы про существование полезного элемента <AllowOverwrite>. Несмотря на откровенную халтуру в официальной документации я бы рекомендовал BOL в качестве основного ресурса (ссылка приводилась в начале поста), потому что лучшего, к сожалению, пока все равно нет. Допустимые команды XMLA и их структуру можно видеть в разделе Child elements.
Алексей Шуленин