第 2 课:为行级安全性创建特性

定义行级安全性的一种常用方法是使用用户的登录信息确定要显示的行。在本课中,将在“雇员”实体内创建一个属性,用来基于用户的登录信息筛选数据。您将创建一个筛选器,然后将该筛选器编辑为一个公式,以便可以使用 GetUserID 函数。

注意注意

本课开始时假定,您的计算机上 Business Intelligence Development Studio 仍未关闭,而且报表模型显示在窗口中。

创建编辑为公式的已筛选特性

  1. 在树视图中,选择**“雇员”**实体。

    在列表视图中将显示“雇员”的各个特性。

  2. 右键单击**“雇员”,指向“新建”,再单击“筛选器”**。

    将打开**“筛选数据”**对话框。

  3. 在**“字段”列表中,双击“Login ID2”**。

    使用您在第 1 课中创建的“Login ID2”字段的筛选条件将被添加到筛选器。

  4. 在筛选器中,右键单击**“Login ID2”,再选择“编辑为公式”**。

    将打开**“定义公式”**对话框,其上显示公式 Login ID2=Empty。

  5. 在**“公式”框中,选择“Empty”**一词。

  6. 选择**“函数”选项卡,再展开“信息”**节点。

  7. 双击**“GetUserID”**函数。

    Empty 将被替换为 GetUserID()。

  8. 单击**“确定”**。

    **“定义公式”**对话框将关闭,且筛选子句显示 Login ID2=GetUserID。

  9. 再单击**“确定”**。

    **“筛选数据”**对话框将关闭,且列表视图中显示 NewFilter 属性。接下来,将重命名该特性。

重命名特性

  1. 在列表视图中,右键单击**“NewFilter”属性,再选择“重命名”**。

  2. 键入 UserIDFilter。

    接下来,将为该特性分配必需的属性。

修改特性的属性

  1. 在列表视图中,选择**“UserIDFilter”**特性。

  2. 在“属性”窗口中,找到**“IsFilter”**属性。

  3. 验证**“IsFilter”的值是否为“True”**。

  4. 找到**“Hidden”**属性。

  5. 单击**“Hidden”向下键,再选择“True”**。

    Hidden 属性更改为 True 可阻止模型用户在使用模型创建报表时看到此特性。由于您将该特性用作分配安全性的筛选器,因此用户在创建自己的报表时不必查看此特性。

  6. 在列表视图中,选择**“Login ID2”**特性。

  7. 在**“属性”窗口中,找到“Nullable”**属性。

    由于 Login ID2 特性已将 Nullable 属性设置为 True,因此 UserIDFilter 特性也必须将 Nullable 属性设置为 True。但是,这不是用作安全筛选器的必需属性。

  8. 单击**“Nullable”向下键,再选择“True”**。

为安全筛选器集合分配特性

  1. 在树视图中,选择**“雇员”**实体。

  2. 在“属性”窗口中,找到**“SecurityFilters”**属性。

  3. 选择**“SecurityFilters”属性,再单击省略号 (…**) 按钮。

    将打开**“属性引用集合编辑器”**对话框。

  4. 单击**“添加”**。

  5. 将打开**“安全筛选器属性”**对话框。

  6. 在**“实体”列表中,验证“雇员”**实体是否处于选中状态。

  7. 在**“字段”列表中,选择“UserIDFilter”**特性。

  8. 单击**“确定”,然后再次单击“确定”**。

    接下来,在模型中保存更改,再将模型重新部署到报表服务器。

保存并部署报表模型

  1. 在**“文件”菜单上,单击“全部保存”**。

  2. 在解决方案资源管理器中,右键单击 Adventure Works Model 项目,然后选择**“部署”**。

    模型被部署到报表服务器。

    重要说明重要提示

    若要验证模型是否已部署成功,可以查看“错误列表”选项卡。如果出现错误,则需要先解决该问题,然后再继续操作。

后续步骤

现在您已经创建了一个属性,并将它分配到了 SecurityFilters 集合。接下来,您需要在 SQL Server Management Studio 中启用模型项安全性。请参阅第 3 课:在报表管理器中启用行级别安全性