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


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

После установления соединения с источником аналитических данных можно использовать AdomdCommand объект для выполнения команд и возврата результатов из этого источника данных. Эти команды могут получать данные при использовании многомерных выражений, расширений интеллектуального анализа данных или даже ограниченного синтаксиса языка SQL. Кроме того, команды языка 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=\"http://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();
        }