ADOMD.net 和 Analysis Services OLE DB Provider 之间的差异(尤其是关于身份验证)
Posted
技术标签:
【中文标题】ADOMD.net 和 Analysis Services OLE DB Provider 之间的差异(尤其是关于身份验证)【英文标题】:Differences between ADOMD.net and Analysis Services OLE DB Provider (especially regarding authentication) 【发布时间】:2010-12-11 14:17:45 【问题描述】:我正在尝试连接到远程服务器上的 SQL Server Analysis Services 多维数据集,但该服务器未连接到我所连接的域。
提供用户名和密码后,我可以使用 Excel 连接到多维数据集。现在我正在尝试通过代码连接到同一个多维数据集。
通过 AdomdConnection 连接失败
对 SQL Server 2008 R2 使用 ADOMD.net (AdomdConnection) 我尝试使用此连接字符串进行连接:
Data Source=SRV1;Initial Catalog=Name of Cube;User Id=RemoteAccount;Password=***
此连接在连接的 Open 方法上失败。 有趣的是,“user id”和“password”属性是允许的,因为如果语法错误,你会得到一个 KeyNotFoundException。
通过 OleDbConnection 成功连接
如果我使用 OleDbConnection 和以下连接字符串(从 Excel 连接复制),我可以成功连接:
Provider=MSOLAP.4;Persist Security Info=True;User ID=SRV1;Password=***;Initial Catalog=Name of Cube;Data Source=SRV1;
所以我的问题是:
谁能解释这种行为?我以为 AdomdConnection 只是在下面使用了 OleDB? 有没有办法连接到 SSAS 使用 AdomdConnection 的实例 用户名和密码? 有没有 之间的进一步差异 AdomdConnection 和 OleDbConnection?所有下载均可here。
【问题讨论】:
我知道这是一个旧帖子,但为了其他人来这里寻求帮助,我想参与其中。Marco Russo here 有一篇很好的文章谈论为什么 ADOMD .NET 优于 OLE DB。我希望尝试使用 OLEDB,但在阅读了这篇文章后,我觉得最好的解决方案确实是 ADOMD.NET 以及用于 HTTPS 的 MSDPUMP.DLL。 【参考方案1】:我通过用户名/密码键成功使用了 AdomdConnection,但不同之处在于我正在连接到 HTTP 数据源。我正在使用的解决方案是通过 IIS 7 通过 HTTP 隧道传输 OLAP 流量,如 in MSDN 所述。然后 IIS 将用户名和密码模拟为 Windows 凭据。
注意:在 IIS 中禁用匿名和 Windows 身份验证。我只使用基本身份验证。为了增强安全性,请使用 SSL。
【讨论】:
我正在做同样的事情,使用臭名昭著的 MSDPUMP.DLL。但在上次数据峰会期间与一些微软代表交谈时,他们建议我尝试替代方案,因为这个 DLL 几乎没有维护,他们认为这种方法“过时”。当然,我明白了。它有效(它也适用于我)。但除了他们告诉我的之外,IIS、HTTPS 证书等的部署似乎是一个令人讨厌的开销(和跳跃/瓶颈),特别是如果有一个不错的替代方案。我现在正在研究 OLEDB,看看它是如何比较的。我很担心,因为它可能不支持所有查询。 :(【参考方案2】:如果你不能用excel连接立方体,那么你不能用代码连接它。
ADOMD.Net 和 OleDb 连接之间的区别在于,OleDb MSOLAP 提供程序可用于将 MDX、DAX 和 DMX 查询发送到 Analysis Services 数据库。结果只能是标量或表,因此您不能使用 MDX 查询返回两个以上轴上的结果。当您使用 DAX 查询时,结果将始终很好地适合表,您可以使用 DataReader 类来获取结果。
由于未解决的存在Connection bug,我们主要更喜欢 OleDb 上的 ADOMD.NET。
为了使用 ADOMD.NET 连接到 SSAS 实例,我们需要在 web.config 文件中添加以下行(在 Visual Studio 2012 中创建控制台应用程序之后)
由于我们将使用 Windows 身份验证连接到 Microsoft Analysis Services 2005,因此需要在 web.config 文件中添加这一行来模拟有权访问 Analysis Services 的用户。
我们需要通过创建一个新的应用程序池来配置 IIS 服务器。
下面的 MSDN 链接将给出 ADOMD.NET 连接字符串的其他参数。
https://msdn.microsoft.com/en-us/library/microsoft.analysisservices.adomdclient.adomdconnection.connectionstring
【讨论】:
以上是关于ADOMD.net 和 Analysis Services OLE DB Provider 之间的差异(尤其是关于身份验证)的主要内容,如果未能解决你的问题,请参考以下文章
SSAS 2014 + ADOMD.Net 上的 1 小时超时 - 但没有设置为一小时的超时