第 2 课:为行级安全性创建属性
新建日期: 2006 年 4 月 14 日
定义行级安全性的一种常用方法是,使用用户的登录信息确定显示哪些行。在本课中,将在“雇员”实体内创建一个基于用户的登录信息筛选数据的特性。您将创建一个筛选器,再将该筛选器编辑为公式,以便您可以使用 GetUserID 函数。
注意: |
---|
在开始学习本课前,假定 Business Intelligence Development Studio 在计算机上已打开,而且报表模型显示在窗口中。 |
创建编辑为公式的已筛选特性
在树视图中,选择**“雇员”**实体。
在列表视图中将显示“雇员”的各个特性。
右键单击**“雇员”,指向“新建”,再单击“筛选器”**。
此时,将打开“筛选数据”对话框。
在**“字段”列表中,双击“Login ID2”**。
使用您在第 1 课中创建的“Login ID2”字段的筛选条件将被添加到筛选器。
在筛选器中,右键单击**“Login ID2”,再选择“编辑为公式”**。
将打开“定义公式”对话框,而且显示公式 Login ID2=Empty。
在**“公式”框中,选择“Empty”**一词。
选择**“函数”选项卡,再展开“信息”**节点。
双击**“GetUserID”**函数。
Empty 将被替换为 GetUserID()。
单击**“确定”**。
“定义公式”对话框关闭,而且筛选子句显示 Login ID2=GetUserID。
再单击**“确定”**。
“筛选数据”对话框关闭,而且 NewFilter 特性显示在列表视图中。接下来,将重命名该特性。
重命名特性
在列表视图中,右键单击**“NewFilter”属性,再选择“重命名”**。
键入 UserIDFilter。
接下来,将为该特性分配必需的属性。
修改特性的属性
在列表视图中,选择**“UserIDFilter”**特性。
在“属性”窗口中,找到**“IsFilter”**属性。
验证**“IsFilter”的值是否为“True”**。
找到**“Hidden”**属性。
单击**“Hidden”向下键,再选择“True”**。
将 Hidden 属性更改为 True 可阻止模型用户在使用模型创建报表时看到此特性。由于您将该特性用作分配安全性的筛选器,因此用户在创建自己的报表时不必查看此特性。
在列表视图中,选择**“Login ID2”**特性。
在**“属性”窗口中,找到“Nullable”**属性。
由于 Login ID2 特性已将 Nullable 属性设置为 True,因此 UserIDFilter 特性也必须将 Nullable 属性设置为 True。但是,这不是用作安全筛选器的必需属性。
单击**“Nullable”向下键,再选择“True”**。
为安全筛选器集合分配特性
在树视图中,选择**“雇员”**实体。
在“属性”窗口中,找到**“SecurityFilters”**属性。
选择**“SecurityFilters”属性,再单击省略号 (…**) 按钮。
将打开“属性引用集合编辑器”对话框。
单击**“添加”**。
将打开“安全筛选器属性”对话框。
在**“实体”列表中,验证“雇员”**实体是否处于选中状态。
在**“字段”列表中,选择“UserIDFilter”**特性。
单击**“确定”,然后再次单击“确定”**。
接下来,在模型中保存更改,再将模型重新部署到报表服务器。
保存并部署报表模型
在**“文件”菜单上,单击“全部保存”**。
从解决方案资源管理器中,右键单击**“Adventure Works Model”,再选择“部署”**。
模型被部署到报表服务器。
重要提示: 若要验证模型是否已成功部署,您可以查看“错误列表”选项卡。如果出现错误,则需要先解决该问题,然后再继续操作。
后续步骤
现在,您已经创建一个特性,并将其分配给 SecurityFilters 集合。接下来,您需要在 SQL Server Management Studio 中启用模型项安全性。请参阅第 3 课:在 Management Studio 中启用行级别安全性。
请参阅
其他资源
使用模型设计器
DefaultSecurityFilter 对象(模型设计器)
SecurityFilters 集合
在模型设计器中使用实体
使用角色、源字段和表达式
发布报表模型
GETUSERID(报表生成器)