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

我想知道MonoDevelop支持ADOMD.NET吗?
如果Mono不支持ADOMD.NET,是否可以使用C#,Mono和Linux连接到Analysis Server?

最佳答案

您实际上可以按如下所示在XMLA / SOAP级别上连接到Analysis Services:

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

使用任何开发环境,将http POST请求发送到在上述步骤(例如https://YourServer.example.com/olap/msmdpump.dll)中配置的http URL,该正文中包含以下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;&gt;&amp;

它实际上必须是一个http post请求,一个get请求将导致错误。

08-27 20:26
查看更多