【发布时间】:2009-08-07 10:06:12
【问题描述】:
我仓库中的一些维度表:
DML
Site
Id bigint
Name nvarchar(256)
Primary key (Id)
DATA
SiteId Name
2 Site 2
3 Site A
DML
UserSite
Username nvarchar(256)
SiteId bigint
Primary key (Username, SiteId)
Foreign key (SiteId) referrences Site(Id)
DATA
Username SiteId
EMSUser1 2
EMSUser1 3
EMSUser2 3
我的 SSAS 项目: 我在一个使用维度向导创建的 BIDS 项目中在一维中使用了这两个维度表。 用户名与 SSAS 服务器上的两个本地 windows 用户帐户相关,它们是本地 windows 的成员 组报告浏览器。我在 BIDS 中为该组创建了一个角色,并在维度数据选项卡中添加了一个 MDX 表达式 对于 Username 属性的 AllowedSet 框中的此维度:
STRTOMEMBER("[UserSiteSite].[Username].["+Trim(Mid( UserName, InStr(1, UserName, "\")+ 1,128))+"]")
此维度用于已全部处理和部署的多维数据集。然后我有一个基于该多维数据集的 SSRS 报告。
我的意图:
我要做的是获取当前正在浏览 SSRS 的登录用户并删除返回的字符串的“
所以对于 EMSUser1,我应该看到两个站点的记录,但它似乎只允许第一个(“站点 2”,ID 为 2) 即使事实表中存在该站点的记录,也没有“站点 A”的迹象。
我一直在浏览 Analysis Services 2008 的发布和分步手册以及所有博客等。 我只是无法完全了解内部运作以实现我的目标。
我做错了什么?
【问题讨论】:
-
很难理解这个“隐藏”过滤器的概念。我以前做过类似的事情,但是我必须非常小心 SQL Analysis Services 2000 中称为“Visual Totals”的东西。恐怕我不知道 BIDS 的后果是什么。抱歉,这不是很有帮助。相信我,您必须非常非常仔细地进行测试,使用比您认为必要的更多的测试场景!
标签: security sql-server-2008 ssas mdx dimensions