共用方式為


授與數據格數據的自定義存取權(Analysis Services)

適用於: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

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

顯示允許和拒絕的數據透視表,

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

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

身為系統管理員,您可以指定角色成員是否具有 Cube 內儲存格的讀取、讀取或讀取/寫入許可權。 將許可權放在數據格上是允許的最低安全性層級,因此在開始在此層級套用許可權之前,請務必記住一些事實:

  • 數據格層級安全性無法擴充已在較高層級限制的許可權。 例如:如果角色拒絕存取維度數據,數據格層級安全性就無法覆寫拒絕的集合。 另一個範例:請考慮具有 Cube 讀取 許可權的角色,以及儲存格上 讀取/寫入 許可權 - 資料格數據許可權將不會 讀取/寫入;它會 讀取

  • 自定義許可權通常需要在相同角色內的維度成員和儲存格之間進行協調。 例如,假設您想要拒絕存取不同轉銷商組合的數個折扣相關量值。 假設 轉銷商 做為維度數據和 折扣金額 做為量值,您必須在量值(使用本主題中的指示)以及維度成員的相同角色許可權內合併。 如需設定維度許可權的詳細資訊,請參閱 授與維度數據的自定義存取權

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

允許存取特定量值

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

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

  2. 儲存格資料中,檢查 Cube 選取項目以確定您已選擇正確的資料格,然後選取 [啟用讀取許可權]

    如果您只選取此複選框,而且未提供 MDX 表達式,效果會與拒絕存取 Cube 中的所有儲存格相同。 這是因為每當 SQL Server 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 中 轉銷商總利潤。 其衍生自 Reseller Sales AmountReseller Total Product Cost 量值。 只要角色具有 轉銷商毛利 單元格的讀取許可權,即使其他量值上明確拒絕許可權,此量值仍可檢視。 作為示範,請將下列 MDX 表達式複製到 建立角色 | 數據格數據 | 允許讀取 cube 內容

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

在 Excel 中,使用目前角色連接到 Cube,然後選擇這三個量值以查看數據格安全性的效果。 請注意,拒絕集合中的量值無法使用,但使用者可以看到匯出量值。

具有可用和無法使用儲存格的 Excel 資料表,

設定匯出量值的 Read-Contingent 許可權

數據格安全性提供替代的 Read-Contingent,用於設定參與計算之相關儲存格的許可權。 再次考慮 轉銷商總利潤 範例。 當您輸入上一節中提供的相同 MDX 運算式時,這次會放在 [建立角色 | 數據] 對話框的第二個文字區域中(在下列文字區域中,允許根據單元格安全性讀取單元格內容),在 Excel 中檢視時,結果就會明顯。 由於 轉銷商總利潤 取決於 轉銷商銷售金額轉銷商總產品成本,因此現在無法存取總利潤,因為它的構成部分無法存取。

注意

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

回想先前各節只選取 [啟用讀取許可權] 複選框,而不需提供任何 MDX 表達式,就會拒絕存取 Cube 中的所有單元格。 這是因為每當 SQL Server Analysis Services 解析 Cube 數據格子集時,默認允許的集合是空的集合。

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

數據格的讀取/寫入許可權可用來啟用回寫,前提是成員擁有 Cube 本身的讀取/寫入許可權。 在數據格層級授與的許可權不能大於在 Cube 層級授與的許可權。 如需詳細資訊,請參閱 設定分割區回寫

另請參閱

MDX Builder (Analysis Services - 多維度數據)
基本 MDX 腳稿 (MDX)
授與進程許可權 (Analysis Services)
授與維度的許可權 (Analysis Services)
授與維度數據的自定義存取權 (Analysis Services)
授與 Cube 或模型許可權 (Analysis Services)