共用方式為


授予儲存格數據的自定義存取權(分析服務)

儲存格安全性是用來允許或拒絕存取量度 Cube 內的數據。 下圖顯示數據透視表中允許和拒絕量值的組合,當以角色只允許存取特定量值的使用者身分連線時。 在此範例中, Reseller Sales AmountReseller Total Product Cost 是唯一可透過此角色取得的量值。 所有其他量值都會隱含拒絕(下一節中提供用來取得此結果的步驟:允許存取特定量值)。

顯示允許和拒絕的儲存格的數據透視表

單元格許可權會套用至數據格內的數據,而不是套用至其元數據。 請注意,查詢結果中,該單元格仍然可見,顯示的值是#N/A ,而不是該單元格的實際值。 除非 #N/A 用戶端應用程式會轉譯值,否則值會顯示在單元格中,或者藉由在連接字串中設定安全單元格值屬性來指定另一個值。

若要完全隱藏儲存格,您必須限制可檢視的成員維度、維度屬性和維度屬性成員。 如需詳細資訊,請參閱授與維度數據的自定義存取權(Analysis Services)。

身為系統管理員,您可以指定角色成員是否具有多維資料集中的儲存格的讀取、有條件讀取或讀取/寫入許可權。 將許可權放在儲存格上是最低的安全性層級,因此在開始在此層級套用許可權之前,請務必記住幾個重要事項:

  • 單元格層級安全性無法增加已在較高層級限制的權限。 例如:如果角色拒絕存取維度資料,儲存格層級安全性就無法覆寫所拒絕的集合。 另一個範例:請考慮具有Read 立方體許可權的角色,以及對儲存格具有讀取/寫入 權限的情況 ─ 儲存格的數據權限將不會是讀取/寫入;而是Read

  • 自訂權限通常需要在同一角色內的維度成員和單元格之間進行協調。 例如,假設您想要拒絕存取不同轉銷商組合的數個折扣相關量值。 考慮 轉銷商 作為維度數據,以及 折扣金額 作為量值,您需要在角色許可權中同時合併量值的權限(使用本主題中的指引)以及維度成員的權限。 如需關於設定維度許可權的詳細資訊,請參閱 將自訂存取權授與維度資料(Analysis Services)

儲存格層級的安全性是透過 MDX 運算式來指定的。 因為儲存格是元組(也就是跨可能有多個維度和量值的交集點),因此必須使用 MDX 來識別特定儲存格。

允許存取特定量值

您可以使用儲存格安全性來明確選擇可用的量值。 一旦您特別識別出哪些成員被允許,所有其他措施都將無法使用。 這可能是透過 MDX 腳本實作的最簡單案例,如下列步驟所示。

  1. 在 SQL Server Management Studio 連接到 Analysis Services 實例時,選取資料庫、開啟 [ 角色 ] 資料夾,然後按兩下資料庫角色(或建立新的資料庫角色)。 成員資格可能已經指定,角色應擁有存取此 Cube 的權限。 如果您需要此步驟的協助,請參閱 授予 Cube 或模型權限(Analysis Services)

  2. 資料格 中,檢查立方體選擇以確定您已選擇正確的選項,然後選擇啟用讀取權限

    如果您只選取此複選框,而且未提供 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 AmountReseller Total Product Cost,則此表達式的效果會顯示值。 否則,請拒絕存取。 表達式有多個部分,每個部分都以括弧括住。 運算子 OR 可用來指定多個量值。

拒絕存取特定措施

下列 MDX 運算式也在建立角色 | 單元格數據 | 中指定允許讀取 Cube 內容,但具有相反的效果,使得某些量度無法使用。 在此範例中,會使用 NOTAND 運算符,將折扣金額折扣百分比設為無法使用。 透過此角色連線的使用者將可以看到所有其他量值。

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

在 Excel 中,儲存格安全性在下圖中顯而易見:

Excel 資料行顯示儲存格為不可用

設定匯出量值的讀取許可權

計算量值的許可權可以獨立設定,與其組成部分無關。 如果您想要協調計算量值與其相依量值之間的許可權,請跳至下一節 Read-Contingent。

若要了解讀取許可權如何針對導出量值運作,請考慮 AdventureWorks 中的 轉售商總利潤 。 其衍生自 轉銷商銷售金額轉銷商總產品成本 量值。 只要某個角色具有 轉銷商毛利 數據格的讀取許可權,即使其他量值上明確拒絕許可權,此量值仍可檢視。 作為示範,將下列 MDX 表達式複製到 建立角色 | 儲格資料 | 允許讀取 cube 內容

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

在 Excel 中,使用目前角色連接到資料立方體,然後選擇所有三個量值來查看儲存格安全性的效果。 請注意,拒絕集合中的量值無法使用,但使用者可以看到匯出量值。

具有可用和不可用儲存格的 Excel 資料表

設定計算度量的 Read-Contingent 許可權

儲存格安全性提供替代方案 Read-Contingent,用於設定參與計算之相關儲存格的權限。 請重新考慮轉銷商毛利案例。 當您在上一節中提供的相同 MDX 運算式輸入到 [建立角色] 對話方塊的 [單元格資料] 的第二個文字區域 (在 [允許根據單元格安全性讀取單元格內容] 下方的文字區域)時,在 Excel 中查看結果便會顯而易見。 由於 轉銷商總利潤 取決於 轉銷商銷售金額轉銷商總產品成本,因此現在無法存取總利潤,因為其組成部分無法存取。

備註

如果您在相同角色內設定儲存格的讀取權限和 Read-Contingent 權限,會發生什麼事? 角色會在單元格上提供讀取權限,而不是讀取條件權限。

回想一下,在未提供任何 MDX 運算式的情況下,只選取 [ 啟用讀取許可權 ] 複選框,會拒絕存取 Cube 中的所有單元格。 這是因為每當 Analysis Services 解析 Cube 數據格子集時,默認允許的集合是空的集合。

設定儲存格的讀取/寫入許可權

單元格的讀寫權限可用來啟用回寫,前提是成員擁有多維資料集本身的讀寫權限。 在儲存格層級授予的許可權不能大於在 cube 層級授予的許可權。 如需詳細資訊,請參閱 設定分割區寫回

另請參閱

MDX 產生器 (Analysis Services - 多維度數據)
基本 MDX 文稿 (MDX)
授予程序許可權(Analysis Services)
授予維度權限(Analysis Services)
授與維度數據的自定義存取權(Analysis Services)
授與 Cube 或模型許可權 (Analysis Services)