Mono中的ADOMD客户端

时间:2014-08-14 04:39:25

标签: c# .net linux mono ssas

我安装了Ubuntu(v 14.04)和MonoDevelop(v 4.0.12)。我希望从Linux(Ubuntu)上运行的C#应用​​程序连接到SSAS(Analysis Services)。我想在我的C#代码中导入Microsoft.AnalysisServices.AdomdClient.dll。即使在添加对此dll的引用之后,由于dll,我也无法编译代码。

我想知道MonoDevelop是否支持ADOMD.NET? 如果Mono不支持ADOMD.NET,有没有办法使用C#,Mono和Linux连接到Analysis服务器?

1 个答案:

答案 0 :(得分:0)

您实际上可以按如下方式连接到XMLA / SOAP级别的Analysis Services:

首先按照描述here设置一个http代理到Analysis Services。然后,您可以通过http POST请求联系IIS应用程序,该请求会将您的请求转发到Analysis Services服务器,并将结果作为XML返回。

使用任何开发环境,将http POST请求发送到上述步骤中配置的http URL(例如https://YourServer.example.com/olap/msmdpump.dll),其中包含正文中的以下XML:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <Execute xmlns="urn:schemas-microsoft-com:xml-analysis">
      <Command>
        <Statement>
          select [Date].[Calendar].[Calendar Year].Members
                 on columns,
                 [Sales Territory].[Sales Territory Country].Members
                 on rows
            from [Adventure Works]
        </Statement>
      </Command>
      <Properties>
        <PropertyList>
          <Catalog>Adventure Works DW 2008</Catalog>
          <Format>Tabular</Format>
        </PropertyList>
      </Properties>
    </Execute>
  </soap:Body>
</soap:Envelope>

然后,您将以两种格式之一(表格式(更类似于关系结果集)或多维格式)将结果作为XML返回,您可以在其中获得轴列表,然后获取单元格列表。要设置格式,请将查询保留在上面的代码中,或将<Format>Tabular</Format>更改为<Format>Multidimensional</Format>以获得多维格式的结果。这个结果的解释当然取决于您的申请。但是 - 根据可能的MDX语句的可变性 - 您只需要在应用程序中编写所需的代码。

Statement XML元素的内容是您的MDX select语句。请注意 - 因为这是XML - 您必须在此语句中转义一些特殊字符,例如<>&,并使用&lt;,{{1而}和&gt;代替。

它确实必须是一个http post请求,get请求会导致错误。