我的SSAS服务器今天遇到了一个非常有趣的问题。我有两个(几乎)相同的数据立方体。每个名为Desserts和Test的这些多维数据集都有一个角色,并且在该角色中分配了一个用户:
我通过位于同一服务器上的IIS中的相同“msmdpump.dll”文件访问excel中的两个多维数据集。两个多维数据集的连接字符串如下所示:
甜品:
Provider = MSOLAP.8; Persist Security Info = True; User ID = xxxDessertsAdmin;初始目录= xxx_Desserts_GL;数据 源= https://Desserts.xxx.com/olap/msmdpump.dll;MDX 兼容性= 1;安全选项= 2; MDX缺少成员模式=错误;更新 隔离级别= 2
测试:
Provider = MSOLAP.8; Persist Security Info = True; User ID = xxxTestAdmin;初始目录= xxx_Test_GL;数据 源= https://Test.xxx.com/olap/msmdpump.dll;MDX 兼容性= 1;安全选项= 2; MDX缺少成员模式=错误;更新 隔离级别= 2
这些多维数据集都正确构建并包含相同的数据。我可以通过在SSAS中使用多维数据集浏览器来验证这一点。
所以要查看,排除我拥有的不同名称:相同的多维数据集,相同的数据,相同的角色,相同的用户,相同的“msmdpump.dll”,相同的应用程序池,Excel中的相同连接字符串。据我说的几乎相同的立方体。但是其中一个不起作用。
当我尝试在show中访问excel中的“Desserts”多维数据集时,我确实有权访问多维数据集。我可以直接通过向“甜点”多维数据集授予“IUSR”用户帐户权限,设置连接字符串,然后撤消该访问权限(从“甜点角色”中删除“IUSR”)来直接重现此问题:
在我看来,“msmdpump.dll”忽略了通过连接字符串传递的用户名,而是尝试使用“IUSR”帐户访问多维数据集。我不明白为什么会这样。 “msmdpump.dll”的应用程序池未在该用户名下运行。我没有在我的服务器上配置任何在该上下文下运行的东西。
为什么(仅限甜点多维数据集)“msmdpump.dll”忽略连接字符串中的用户名,而是尝试使用“IUSR”帐户访问多维数据集?