共用方式為


將自訂存取權授與資料格資料 (Analysis Services)

資料格安全性用於允許或拒絕對 Cube 中的量值資料的存取。下圖顯示使用只具有對特定量值的存取權之使用者角色進行連接時,樞紐分析表中允許或拒絕的量值組合。在此範例中,Reseller Sales Amount 及 Reseller Total Product Cost 是唯二能夠透過此角色取得的量值。存取其他所有量值都會遭到隱含拒絕 (下一節「允許對特定量值的存取」中將提供獲得此結果的步驟)。

顯示允許及拒絕之資料格的樞紐分析表

資料格權限會套用至資料格內的資料,而不是套用至其中繼資料。請注意資料格在查詢結果中的顯示方式,是顯示 #N/A,而不是實際的資料格值。除非用戶端應用程式翻譯該值,或在連接字串中設定 Secured Cell Value 屬性來指定另一個值,否則,#N/A 值會出現在資料格中。

若要完全隱藏資料格,您必須限制可見的成員,這包含維度、維度屬性和維度屬性成員。如需詳細資訊,請參閱<將自訂存取權授與維度資料 (Analysis Services)>。

身為管理員,您可以指定是否要使角色對 Cube 中的資料格具有讀取權限、意外讀取權限或讀取/寫入權限。在資料格上放置權限是允許的最低層級安全性,因此在您開始套用此層級的權限時,牢記以下幾點事實是很重要的:

  • 資料格層級安全性無法擴展為較高層級所限制的權限。例如:若有角色拒絕對維度資料的存取,資料格層級安全性也無法覆寫拒絕的集合。另一個例子:假設角色具有 Cube 的讀取權限以及資料格的讀取/寫入權限,則資料格資料權限就不會是讀取/寫入,而是讀取

  • 自訂權限通常需要在相同角色中協調維度成員和資料格。例如,您想要拒絕不同轉售商組合對數個與折扣相關的量值進行存取。假設 Resellers 是維度,Discount Amount 是量值,您就必須在相同角色中,結合量值的權限 (遵循本主題中的指示) 與維度成員的權限。如需設定維度權限的詳細資料,請參閱<將自訂存取權授與維度資料 (Analysis Services)>。

資料格層級安全性是透過 MDX 運算式來指定。由於資料格是 Tuple (亦即多維度與量值之間可能的交集點),因此必須使用 MDX 識別特定資料格。

允許對特定量值的存取

您可以使用資料格安全性,明確地選擇哪些量值為可使用。當您明確地識別出要允許哪些量值時,其他所有量值就會變成無法使用的狀態。如下列步驟所示,這可能是透過 MDX 指令碼進行實作的最簡單案例。

  1. 在 SQL Server Management Studio 中,連接到 Analysis Services 執行個體,選取資料庫,開啟 [角色] 資料夾,然後按一下資料庫角色 (或建立新的資料庫角色)。此時應該已指定了成員資格,且角色應該具有對 Cube 的 Read 存取權。若您需要此步驟的說明,請參閱<授與 Cube 或模型權限 (Analysis Services)>。

  2. 在 [資料格資料] 中,檢查 Cube 選取範圍,確認您的選擇正確,然後選取 [啟用讀取權限]。

    若您只選取此核取方塊,而沒有提供 MDX 運算式,則會產生和拒絕對 Cube 中所有資料格進行存取一樣的效果。這是因為當 Analysis Services 解析 Cube 資料格子集時,預設的允許集合是空集合。

  3. 輸入下列 MDX 運算式。

    (Measures.CurrentMember IS [Measures].[Reseller Sales Amount]) OR (Measures.CurrentMember IS [Measures].[Reseller Total Product Cost])
    

    此運算式會明確識別出要向使用者顯示哪些量值。透過此角色進行連接的使用者將無法看到其他量值。請注意,CurrentMember (MDX) 會設定內容,且後面接著允許的量值。若目前的成員包含 Reseller Sales Amount 或 Reseller Total Product Cost,則此運算式會顯示值。否則拒絕存取。此運算式包含多個部分,且每個部分使用括號括住。OR 運算子用於指定多個量值。

拒絕對特定量值的存取

下列 MDX 運算式 (同時在 [建立角色] | [資料格資料] | [允許讀取 Cube 內容] 中指定) 的效果則相反,會致使某些量值無法使用。在此範例中,使用 NOT 及 AND 運算子會致使 Discount Amount 及 Discount Percentage 無法使用。透過此角色進行連接的使用者將可以看到其他所有量值。

(NOT Measures.CurrentMember IS [Measures].[Discount Amount]) AND (NOT Measures.CurrentMember IS [Measures].[Discount Percentage])

如下圖所示,Excel 中的資料格安全性是顯而易見的:

顯示資料格為不可使用的 Excel 資料行

設定導出量值的讀取權限

導出量值可根據其組成的部分,分別設定導出量值的權限。若您要協調導出量值與其相依量值間的權限,請跳到下一節的意外讀取。

若要了解導出量值的讀取權限運作方式,請思考 AdventureWorks 中的 [Reseller Gross Profit]。其是衍生自 [Reseller Sales Amount] 和 [Reseller Total Product Cost] 量值。只要角色具有 [Reseller Gross Profit] 資料格的讀取存取權,那麼即使明確拒絕其他量值的權限,也會顯示此量值。基於示範用途,將下列 MDX 運算式複製到 [建立角色] | [資料格資料] | [允許讀取 Cube 內容]。

(NOT Measures.CurrentMember IS [Measures].[Reseller Sales Amount])
AND (NOT Measures.CurrentMember IS [Measures].[Reseller Total Product Cost])

在 Excel 中,使用目前角色連接至 Cube,然後選擇所有三個量值,以查看資料格安全性的效果。請注意,拒絕的集合中的量值為無法使用,但會向使用者顯示導出量值。

具有可使用及無法使用之資料格的 Excel 資料表

設定導出量值的意外讀取權限

資料格安全性提供「意外讀取」做為替代選項,以設定參與計算的相關資料格的權限。我們再次使用 [Reseller Gross Profit] 作為範例。當您在 [建立角色] | [資料格資料] 對話方塊的第二個文字區域中 (位於 [允許讀取資料格內容 (視資料格安全性而定)] 下方的文字區域中),輸入上一節中所提供的同一個 MDX 運算式時,在 Excel 中檢視的結果未必正確。因為 [Reseller Gross Profit] 是依據 [Reseller Sales Amount] 和 [Reseller Total Product Cost],而 Reseller Gross Profit 的組成部分為無法存取,所以目前也無法存取 Reseller Gross Profit。

[!附註]

若您在相同角色中同時設定讀取和意外讀取的權限時會發生什麼事?角色會提供資料格的讀取權限,而不會提供意外讀取權限。

請回想一下之前章節中只選取 [啟用意外讀取權限] 核取方塊,且沒有提供任何 MDX 運算式,以致拒絕對 Cube 中所有資料格進行存取。這是因為當 Analysis Services 解析 Cube 資料格子集時,預設的允許集合是空集合。

設定資料格的讀取/寫入權限

若成員具有 Cube 本身的讀取/寫入權限,就可以使用資料格的讀取/寫入權限以啟用回寫。在資料格層級授與的權限不得大於在 Cube 層級授與的權限。如需詳細資訊,請參閱<設定資料分割回寫>。

請參閱

工作

授與處理權限 (Analysis Services)

授與維度權限 (Analysis Services)

將自訂存取權授與維度資料 (Analysis Services)

參考

MDX 產生器對話方塊 (Analysis Services - 多維度資料)

概念

基本 MDX 指令碼 (MDX)

授與 Cube 或模型權限 (Analysis Services)