第 2 課:建立資料列層級安全性的屬性
定義資料列層級安全性的一種常用方法是,利用使用者的登入資訊來決定要顯示的資料列。在這一課中,您會在 [員工] 實體內建立屬性,依據使用者的登入資訊來篩選資料。您會先建立篩選,然後將篩選編輯為公式,以便能使用 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。
接下來,您要指派必要屬性 (Attribute) 的屬性 (Property)。
修改屬性 (Attribute) 的屬性 (Property)
在清單檢視中,選取 [UserIDFilter] 屬性。
在 [屬性] 視窗中,找到 [IsFilter] 屬性。
確認 [IsFilter] 的值為 [True]。
找到 [隱藏] 屬性。
按一下 [隱藏] 向下箭頭,然後選取 [True]。
將 [Hidden] 屬性變更為 [True] 會使得模型使用者在使用模型建立報表時無法看到這個屬性。由於您是將這個屬性當做篩選,用來指派安全性,所以使用者在建立自己的報表時不需要看到這個屬性。
在清單檢視中,選取 [Login ID2] 屬性。
在 [屬性] 視窗中,找到 [可為 Null] 屬性。
由於 [Login ID2] 屬性已將 [Nullable] 屬性設定為 [True],因此 [UserIDFilter] 屬性也必須將 [Nullable] 屬性設定為 [True]。不過,這並不是做為安全性篩選的必要屬性。
按一下 [可為 Null] 向下箭頭,然後選取 [True]。
指派屬性給安全性篩選集合
在樹狀檢視中,選取 [員工] 實體。
在 [屬性] 視窗中,找到 [SecurityFilters] 屬性。
選取 [SecurityFilters] 屬性,然後按一下省略符號 (...) 按鈕。
[屬性參考集合編輯器] 對話方塊隨即開啟。
按一下 [加入]。
[安全性篩選屬性] 對話方塊隨即開啟。
在 [實體] 清單中,確認已選取 [員工] 實體。
在 [欄位] 清單中,選取 [UserIDFilter] 屬性。
按一下 [確定],然後再按一下 [確定]。
接下來,您要儲存模型中的變更,然後將模型重新部署到報表伺服器。
儲存和部署報表模型
在 [檔案] 功能表上,按一下 [全部儲存]。
在 [方案總管] 中,以滑鼠右鍵按一下 [Adventure Works 模型] 專案並選取 [部署]。
模型便會部署到報表伺服器。
重要事項 若要確認模型是否已成功部署,可以檢視 [錯誤清單] 索引標籤。如果發生錯誤,就必須先對問題進行疑難排解,才能繼續進行。
後續步驟
此時,您已經建立了屬性並將其指派給 SecurityFilters 集合。接下來,您必須在 SQL ServerManagement Studio 中啟用模型項目安全性。請參閱<第 3 課:在報表管理員中啟用資料列層級安全性>。