我已经安装了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-您必须在此语句中转义一些特殊字符,例如<
,>
和&
,并改用<
,>
和&
。它实际上必须是一个http post请求,一个get请求将导致错误。