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


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

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

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

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

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

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

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

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

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

Цель

Используемый метод

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

ExecuteReader, возвращает объект AdomdDataReader

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

ExecuteCellSet

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

ExecuteNonQuery

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

ExecuteXmlReader

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

В этом примере объект AdomdCommand используется для выполнения команды XML для аналитики, которая произведет обработку куба 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();
        }