gpt4 book ai didi

java - 在不使用 msmdpump.dll 的情况下在 java 中查询 Analysis Services 多维数据集

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:26:06 25 4
gpt4 key购买 nike

我目前的任务是构建某种健康检查应用程序,稍后将包含在 jboss 环境中。但首先是第一件事。我需要访问 3 种不同类型的数据库:MS SQL 关系数据库、TM1 和 MS SQL 分析服务。虽然前两个似乎易于管理,但我在尝试通过 java 访问 Analysis Services 时遇到了问题。最常见的是,似乎使用了 olap4j 库,但这是基于 msmdpump.dll,通过 IIS 隧道响应。我们不能使用这种方法,因为没有使用 IIS,而且我们没有对 Analysis Services 服务器的系统访问权限。

简而言之:如何在不使用 msmdpump.dll 的情况下访问 Java 中的 Analysis Services?我们需要在 MDX 或 XMLA 中发送简单的查询。客户端和服务器都使用 Windows Server 2008 R2。 Analysis Services 版本也是 2008 R2。 Analysis Services 作为服务提供给我们,我们无权访问系统本身。

似乎可以选择使用 powershell 脚本来访问 Analysis Services 并通过 java 调用该脚本。但如果有更好的选择,我宁愿避免这种方法。

感谢您的帮助!

最佳答案

如果您想从 Java 调用 Analysis Services,我认为您无法避免 IIS 中的 msmdpump.dll。

Analysis Services 服务器本身在结构上使用 SOAP,但使用 Microsoft 特定的二进制 SOAP 格式(有关详细信息,请参阅 http://sqlblog.com/blogs/mosha/archive/2005/12/02/analysis-services-2005-protocol-xmla-over-tcp-ip.aspx)。 ADOMD.NET 客户端驱动程序和 msmdpump.dll 可以理解此通信协议(protocol),除此之外别无其他。因此,您可以使用 .net 或任何能够与 .net 交互的语言编写您的应用程序 - 或者您可以使用客户端上的任何环境,这些环境可以通过 IIS 中托管的 msmdpump.dll 发送和接收 http 请求。实际上,msmdpump.dll 只是在使用二进制压缩 XML 的 TCP 和使用未压缩标准 XML 的 http 之间进行转换(以及在 http 身份验证机制和集成安全性之间进行转换,这在 Java 中也很难实现)。

据我所知,Microsoft 对其二进制协议(protocol)拥有一些权利,因此如果您尝试自己开发一种直接从 Java 与 AS 对话的工具,您甚至可能会侵犯他们的权利。

因此,在 IIS 中不使用 msmdpump.dll 作为 Java 应用程序和 AS 服务器之间的代理的唯一方法是在 .net 中开发自己的代理,或多或少地实现 msmdpump.dll 已经完成的功能:在使用二进制压缩 XML 的 TCP 和您在 .net 组件和 Java 组件之间定义的一些其他协议(protocol)之间,可能只是交换 XMLA 请求和 XML 答案。或者您可以在 ADOMD.NET 和您的 Java 应用程序之间实现更高级别的 API。但在这种情况下,没有办法绕过某些 .net 开发,我认为不值得付出努力和复杂性。

关于java - 在不使用 msmdpump.dll 的情况下在 java 中查询 Analysis Services 多维数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21232057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com