Поделиться через


Выполнение команд в источнике аналитических данных

Установив соединение с источником аналитических данных, с помощью объекта AdomdCommand можно выполнять команды в этом источнике данных, и возвращать из него результаты. Эти команды могут получать данные при помощи многомерных выражений, расширений интеллектуального анализа данных или даже ограниченного синтаксиса SQL. Кроме того, при помощи команд языка сценариев служб Analysis Services (язык ASSL) можно изменять основную базу данных.

Создание команды

Перед выполнением команды ее необходимо создать. Создать команду можно при помощи одного из двух способов:

  • В первом способе используется конструктор AdomdCommand, который принимает команду для выполнение в источнике данных, а также объект AdomdConnection, в котором команда будет выполняться.

  • Во втором способе используется метод CreateCommand объекта AdomdConnection.

Запросить и изменить текст выполняемой команды можно при помощи свойства CommandText. Создаваемые команды необязательно должны возвращать данные после их выполнения.

Выполнение команды

После создания объекта AdomdCommand команда может использовать несколько методов Execute, чтобы выполнять различные действия. В следующей таблице приведены некоторые из этих действий.

К

Использовать этот метод

Возвращать результаты в форме потока данных

Метод ExecuteReader для возвращения объекта AdomdDataReader.

Возвращать объект CellSet.

ExecuteCellSet

Выполнять команды, которые не возвращают строки.

ExecuteNonQuery

Возвратить объект XMLReader, содержащий данные в формате, совместимом с XML для аналитики (XMLA)

ExecuteXmlReader

Пример выполнения команды

В этом примере объект AdomdCommand используется для выполнения команды XMLA, которая произведет обработку куба Adventure Works DW на локальном сервере без возвращения данных.

        void ExecuteXMLAProcessCommand()
        {
            //Open a connection to the local server
            AdomdConnection conn = new AdomdConnection("Data Source=localhost");
            conn.Open();

            //Create a command, and assign it an XMLA command to process the cube.
            AdomdCommand cmd = conn.CreateCommand();
            cmd.CommandText = "<Process xmlns=\"https://schemas.microsoft.com/analysisservices/2003/engine\">\r\n" +
  @"<Object>
    <DatabaseID>Adventure Works DW Standard Edition</DatabaseID>
    <CubeID>Adventure Works DW</CubeID>
  </Object>
  <Type>ProcessFull</Type>
  <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
</Process>";

            //Execute the command
            int result = cmd.ExecuteNonQuery();

            //Close the connection
            conn.Close();
        }