我已经为 SSAS 配置了 HTTP 访问 (msmdpump.dll) 以在线访问 OLAP Cube,如下面的博客中提供的那样。现在,通过提供适当的连接字符串,可以通过远程连接使用 msmdpump.dll 访问多维数据集。
https://msdn.microsoft.com/en-us/library/gg492140.aspx
同时,我尝试通过 JQuery.ajax () 中的 XML/A 概念访问多维数据集,如下所示,
var MDX = " SELECT {[Date].[Fiscal] ON COLUMNS , {[Measures].[Customer Count]} ON ROWS FROM [Adventure Works] ;
$.ajax({
type: "POST",
url: "http://localhost:6078/olap/msmdpump.dll",
data: "<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\"> <Header></Header> <Body> <Execute xmlns=\"urn:schemas-microsoft-com:xml-analysis\"> <Command> <Statement> " + MDX +" </Statement> </Command> <Properties> <PropertyList> <Catalog>Adventure Works DW Standard Edition</Catalog> </PropertyList> </Properties> </Execute> </Body> </Envelope>",
success: function (responce, textStatus, jqXHR) {
$('body').append(responce);
},
contentType: "text/xml",
dataType: "xml",
});
但它抛出“XMLHttpRequest 无法加载 http://localhost:6078/olap/msmdpump.dll 。预检响应具有无效的 HTTP 状态代码 500”异常,因为我们没有为 IIS 配置跨域域支持以访问 OLAP 数据。我通过提出以下论坛得到了答案,
https://social.technet.microsoft.com/Forums/forefront/en-US/03e4f14e-3301-40b4-b00b-d81ca7b07ce7/xmlhttprequest-cannot-load-httplocalhostolapmsmdpumpdll-response-for-preflight-has-invalid?forum=sqlanalysisservices&prof=required
在这里,我成功地向 IIS 提供了跨域域,以便对 OLAP 应用程序目录(用于创建对 msmdpump.dll 的访问的节点)进行非身份验证访问,如下面的博客中所述。
http://www.igniteui.com/help/igolapxmladatasource-configuring-iis-for-cross-domain-olap-data#summary
最后我坚持了以下异常,
“XMLHttpRequest 无法加载 http://localhost:6078/olap/msmdpump.dll 。预检响应中的 Access-Control-Allow-Headers 不允许请求 header 字段 Content-Type。”
请给我提意见,
IIS 是否需要任何其他配置?
注意:此外,我已经提供了对我的端口(即连接字符串托管端口)的网络访问。
最佳答案
在 IIS 中托管我的示例后,问题已为我解决。当我尝试从“file:///C:/Users/prabus/Desktop/Sample/xmlaaccess.html”本地路径时,我无法访问 msmdpump.dll(托管在同一台机器上)。因此,无法从本地文件路径访问 localhost。
关于jquery - 通过 JQuery.ajax() 连接 OLAP Cube – XML/A,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35066327/