共用方式為


第 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。

    接下來,您要指派必要屬性 (Attribute) 的屬性 (Property)。

修改屬性 (Attribute) 的屬性 (Property)

  1. 在清單檢視中,選取 [UserIDFilter] 屬性。

  2. 在 [屬性] 視窗中,找到 [IsFilter] 屬性。

  3. 確認 [IsFilter] 的值為 [True]

  4. 找到 [隱藏] 屬性。

  5. 按一下 [隱藏] 向下箭頭,然後選取 [True]

    將 [Hidden] 屬性變更為 [True] 會使得模型使用者在使用模型建立報表時無法看到這個屬性。由於您是將這個屬性當做篩選,用來指派安全性,所以使用者在建立自己的報表時不需要看到這個屬性。

  6. 在清單檢視中,選取 [Login ID2] 屬性。

  7. [屬性] 視窗中,找到 [可為 Null] 屬性。

    由於 [Login ID2] 屬性已將 [Nullable] 屬性設定為 [True],因此 [UserIDFilter] 屬性也必須將 [Nullable] 屬性設定為 [True]。不過,這並不是做為安全性篩選的必要屬性。

  8. 按一下 [可為 Null] 向下箭頭,然後選取 [True]

指派屬性給安全性篩選集合

  1. 在樹狀檢視中,選取 [員工] 實體。

  2. 在 [屬性] 視窗中,找到 [SecurityFilters] 屬性。

  3. 選取 [SecurityFilters] 屬性,然後按一下省略符號 (...) 按鈕。

    [屬性參考集合編輯器] 對話方塊隨即開啟。

  4. 按一下 [加入]

  5. [安全性篩選屬性] 對話方塊隨即開啟。

  6. [實體] 清單中,確認已選取 [員工] 實體。

  7. [欄位] 清單中,選取 [UserIDFilter] 屬性。

  8. 按一下 [確定],然後再按一下 [確定]

    接下來,您要儲存模型中的變更,然後將模型重新部署到報表伺服器。

儲存和部署報表模型

  1. [檔案] 功能表上,按一下 [全部儲存]

  2. 在 [方案總管] 中,以滑鼠右鍵按一下 [Adventure Works 模型] 專案並選取 [部署]

    模型便會部署到報表伺服器。

    重要注意事項重要事項

    若要確認模型是否已成功部署,可以檢視 [錯誤清單] 索引標籤。如果發生錯誤,就必須先對問題進行疑難排解,才能繼續進行。

後續步驟

此時,您已經建立了屬性並將其指派給 SecurityFilters 集合。接下來,您必須在 SQL ServerManagement Studio 中啟用模型項目安全性。請參閱<第 3 課:在報表管理員中啟用資料列層級安全性>。