对分析数据源执行命令

建立与分析数据源的连接后,即可使用 AdomdCommand 对象对该数据源运行命令并从其中返回结果。这些命令可使用多维表达式 (MDX)、数据挖掘扩展插件 (DMX) 甚至是有限 SQL 语法来检索数据。此外,您还可以使用 Analysis Services 脚本语言 (ASSL) 命令修改基础数据库。

创建命令

必须先创建命令,然后才能运行该命令。可使用下列两种方法之一创建命令:

可使用 CommandText 属性查询和修改要运行的命令的文本。您创建的命令无需在运行后返回数据。

运行命令

创建 AdomdCommand 对象后,有多个 Execute 方法,可供您的命令执行各种操作。下表列出了其中的部分操作。

执行的操作

方法

将结果作为数据流返回

使用 ExecuteReader 以返回一个 AdomdDataReader 对象

返回一个 CellSet 对象

ExecuteCellSet

运行不返回行的命令

ExecuteNonQuery

返回 XMLReader 对象,该对象包含以 XML for Analysis (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();
        }