我安装了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服务器?
答案 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 - 您必须在此语句中转义一些特殊字符,例如<
,>
和&
,并使用<
,{{1而}和>
代替。
它确实必须是一个http post请求,get请求会导致错误。