SSAS OLAP 多维数据集忽略连接字符串中的凭据

SSAS OLAP Cube Ignores Credentials in Connection String

今天我的 SSAS 服务器遇到了一个非常有趣的问题。我有两个(几乎)相同的数据立方体。每个名为 Desserts 和 Test,这两个多维数据集都有一个角色,并且分配了一个用户:

我正在通过位于同一服务器上 IIS 中的同一个“msmdpump.dll”文件访问 excel 中的两个多维数据集。两个多维数据集的连接字符串如下所示:

甜点:

Provider=MSOLAP.8;Persist Security Info=True;User ID=xxxDessertsAdmin;Initial Catalog=xxx_Desserts_GL;Data Source=https://Desserts.xxx.com/olap/msmdpump.dll;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error;Update Isolation Level=2

测试:

Provider=MSOLAP.8;Persist Security Info=True;User ID=xxxTestAdmin;Initial Catalog=xxx_Test_GL;Data Source=https://Test.xxx.com/olap/msmdpump.dll;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error;Update Isolation Level=2

这两个多维数据集均已正确构建并包含相同的数据。我可以使用 SSAS 中的多维数据集浏览器来验证这一点。

所以回顾一下,除了不同的名称,我有:相同的多维数据集、相同的数据、相同的角色、相同的用户、相同的 "msmdpump.dll"、相同的应用程序池、相同的连接字符串 Excel。据我所知几乎相同的立方体。但是其中一个不起作用。

当我在节目中尝试访问 excel 中的 "Desserts" 多维数据集时,我确实有权访问该多维数据集。我可以通过将 "IUSR" 用户帐户的权限授予甜点立方体,设置连接字符串,然后撤销该访问权限(从 "Desserts Role" 中删除 "IUSR")来直接重现此问题:

在我看来,"msmdpump.dll" 忽略了通过连接字符串传递的用户名,而是尝试使用 "IUSR" 帐户访问多维数据集。我不明白为什么会这样。 “msmdpump.dll”的应用程序池不在该用户名下 运行ning。在那种情况下,我没有在我的服务器上配置任何东西 运行。

为什么(仅针对甜点多维数据集)"msmdpump.dll" 忽略连接字符串中的用户名,而是尝试使用 "IUSR" 帐户访问多维数据集?

是的,除了网站之外,其他一切都一样,每个多维数据集都通过一个单独的网站,两者之间的配置不同。具体来说,是 IIS 中的 "Authentication" 配置导致了这个问题:

"Annoymous" 身份验证需要 "Disabled" 如果您希望将凭据传递给 OLAP 多维数据集。否则它似乎只是默认为 "IUSR" 帐户。