共用方式為


授與資料格資料的自訂存取權

對 MicrosoftSQL Server 2005 Analysis Services (SSAS) 中的資料庫角色授與 Cube 的讀取或讀取/寫入權限後,角色成員就會有存取權可以檢視所有資料格資料。若要限制只能存取特定資料格,您必須明確限制資料格存取權。若要限制只有特定維度成員具有存取權,請參閱<授與資料格資料的自訂存取權>。

若要授與資料庫角色存取特定資料格的權限,您必須使用多維度運算式 (MDX) 運算式來定義具有讀取、意外讀取或讀取/寫入權限的資料格範圍。如需詳細資訊,請參閱<使用 MDX 運算式來設定資料格資料權限>。

設定權限的指導方針

不論資料庫角色對資料格資料是否具有讀取、意外讀取或讀取/寫入權限,有一些指導方針和背景資訊可讓您更輕鬆地處理這些權限。

  • 授與權限給衍生資料格時要謹慎
    衍生資料格是從其他資料格取得其資料。如果資料庫角色對衍生資料格具有權限,但是對於衍生資料格取得其值的資料格不具有權限,則該資料庫角色的成員可能會推斷他們不具權限之資料格的值。例如,資料庫角色對 SalesProfit 量值的資料格具有權限 (亦即,資料庫角色可以看到這些量值),但該角色對 Cost 量值的資料格不具權限。此資料庫角色的成員可以從 Sales 量值減去 Profit 量值,來決定 Cost 量值的值。

  • 資料格資料的權限不得高於 Cube 的權限
    對特定資料格授與的權限,不得超出授與資料庫角色對整個 Cube 的權限。例如,資料庫角色對資料格具有讀取/寫入權限,但相同資料庫角色對 Cube 只具有讀取權限。資料格資料的權限不會是讀取/寫入,而是讀取。

  • 資料格資料的存取權不適用於維度資料的存取
    雖然資料庫角色對資料格資料有存取權,但該角色對維度資料沒有存取權,除非該角色個別對維度資料具有讀取或讀取/寫入權限。對 Cube 資料的存取權可限制資料庫角色有存取權之維度屬性的存取權,但不能將存取權擴充至資料庫角色不具存取權的維度屬性。

  • 拒絕資料格資料的存取並不會對使用者隱藏資料格
    資料格資料的存取權限不會控制資料庫角色是否能看見資料格,而是控制角色是否能看見資料格的內容。如果資料庫角色對資料格資料不具存取權,則資料格仍會在查詢的結果中為可見。不過,資料格包含 #N/A 的值,而不是實際資料格值。除非用戶端應用程式翻譯該值,或在連接字串中設定 Secured Cell Value 屬性來指定另一個值,否則,#N/A 值會出現在資料格中。

    如果您不想要資料格在結果中為可見,則必須限制可檢視的成員—維度、維度屬性和維度屬性成員。如需詳細資訊,請參閱<授與維度存取權>和<授與對維度資料的自訂存取權>。

設定資料格資料的讀取權限

資料庫角色的成員可檢視資料庫角色有讀取權限的資料格。即使這些資料格是從資料庫角色沒有存取權限的資料格衍生而來,還是可以檢視這些資料格。

例如,假設有一個導出量值稱為 Profit,它是從 SalesCost 量值的資料格衍生而來的。如果資料庫角色對 Profit 資料格具有讀取權限,即使該資料庫角色對 SalesCost 量值的資料格沒有權限,仍然可檢視此量值。

[!附註]

如果資料庫角色獲得授與 Cube 資料格子集的讀取權限,但該角色沒有 MDX 運算式來指定所授與的讀取權限是針對哪些資料格,則該資料庫角色對 Cube 中的任何資料格都不具有讀取權限。這是因為當 Analysis Services 解析 Cube 資料格子集時,預設的允許集是空集合。

若要授與維度中之成員的存取權限,使用者必須是 Analysis Services 伺服器角色的成員,或者擁有完整控制權 (管理員) 權限之 Analysis Services 資料庫角色的成員。

若要授與資料庫角色對資料格資料的讀取權限

  1. 在 SQL Server Management Studio 中,連接到 Analysis Services 的執行個體,在 [物件總管] 中展開適當資料庫的 [角色],然後按一下資料庫角色 (或建立新的資料庫角色)。

  2. 按一下 [選取頁面] 窗格中的 [Cube 資料格資料],在 [Cube] 清單中選取 Cube,然後選取 [啟用讀取權限] 核取方塊。

    如果沒有在 [允許讀取 Cube 內容] 方塊中輸入成員,則可檢視所有 Cube 資料格。

  3. 若要特別授與特定成員的存取權,請在 [允許讀取 Cube 內容] 方塊中輸入那些 Cube 資料格的 MDX 運算式。將無法檢視其他 Cube 資料格。

    若要幫助建立 MDX 運算式,在 [編輯 MDX] 旁,請按一下瀏覽按鈕,然後使用出現的 [MDX 產生器] 視窗,來建立您的 MDX 運算式。

    如需用來設定資料格資料權限的 MDX 運算式範例,請參閱<使用 MDX 運算式來設定資料格資料權限>。

設定資料格資料的意外讀取權限

唯有當下列其中一個條件為 True 時,才可檢視資料庫角色具有意外讀取權限的資料格:

  • 具有意外讀取權限的資料格不是從其他資料格衍生而來。

  • 具有意外讀取權限的資料格是從其他資料格衍生而來,但資料庫角色對於衍生此資料格的所有資料格都具有讀取權限。

例如,資料庫角色對 Profit 資料格具有意外讀取權限。Profit 資料格是從 SalesCost 量值衍生而來。在此情況下,唯有當資料庫角色對 SalesCost 量值都具有讀取權限時,才可檢視 Profit 資料格。如果資料庫角色對 Cost 資料格具有意外讀取權限,且 Cost 量值是從其他資料格衍生而來,則資料庫角色對於衍生 Cost 量值的資料格必須具有讀取權限,才可檢視 Profit 資料格。因此,使用意外讀取權限可以在資料格從其他資料格衍生時產生意外事件鏈,即其他資料格又再衍生其他資料格,以此類推。

[!附註]

如果資料庫角色對資料格同時具有讀取和意外讀取權限,則該角色對該資料格具有讀取權限。

[!附註]

如果資料庫角色獲得授與 Cube 資料格子集的意外讀取權限,但該角色沒有 MDX 運算式來指定所授與的意外讀取權限是針對哪些資料格,則該資料庫角色對 Cube 中的任何資料格都不具有意外讀取權限。這是因為當 Analysis Services 解析 Cube 資料格子集時,預設的允許集是空集合。

若要授與維度中之成員的存取權限,使用者必須是 Analysis Services 伺服器角色的成員,或者擁有完整控制權 (管理員) 權限之 Analysis Services 資料庫角色的成員。

若要授與資料庫角色對資料格資料的意外讀取權限

  1. 在 SQL Server Management Studio 中,連接到 Analysis Services 的執行個體,在 [物件總管] 中展開適當資料庫的 [角色],然後按一下資料庫角色 (或建立新的資料庫角色)。

  2. 按一下 [選取頁面] 窗格中的 [Cube 資料格資料],在 [Cube] 清單中選取 Cube,然後選取 [啟用意外讀取權限] 核取方塊。

  3. [允許讀取資料格內容 (視資料格安全性而定)] 方塊中,輸入 MDX 運算式來識別資料庫角色具有意外讀取權限的資料格。

    若要幫助建立 MDX 運算式,在 [編輯 MDX] 旁,請按一下瀏覽按鈕,然後使用出現的 [MDX 產生器] 視窗,來建立您的 MDX 運算式。

    如需用來設定資料格資料權限的 MDX 運算式範例,請參閱<使用 MDX 運算式來設定資料格資料權限>。

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

如果資料庫角色的成員對 Cube 本身具有讀取/寫入權限,則資料庫角色具有讀取/寫入權限的資料格,可由資料庫角色的成員來檢視和更新。在資料格層級授與的權限不得大於在 Cube 層級授與的權限。

[!附註]

如果資料庫角色獲得授與 Cube 資料格子集的讀取/寫入權限,但該角色沒有 MDX 運算式來指定所授與的讀取/寫入權限是針對哪些資料格,則該資料庫角色對 Cube 中的任何資料格都不具有讀取/寫入權限。這是因為當 Analysis Services 解析 Cube 資料格子集時,預設的允許集是空集合。

若要授與或拒絕特定資料格的存取權限,使用者必須是 Analysis Services 伺服器角色的成員,或是擁有完整控制權 (管理員) 權限之 Analysis Services 資料庫角色的成員。

授與資料庫角色對資料格資料的讀取/寫入存取權

  1. 在 SQL Server Management Studio 中,連接到 Analysis Services 的執行個體,在 [物件總管] 中展開適當資料庫的 [角色],然後按一下資料庫角色 (或建立新的資料庫角色)。

  2. 按一下 [選取頁面] 窗格中的 [Cube 資料格資料],在 [Cube] 清單中選取 Cube,然後選取 [啟用讀取/寫入權限] 核取方塊。

  3. [允許 Cube 內容的讀取和寫入] 方塊中,輸入 MDX 運算式來識別資料庫角色具有讀取/寫入權限的資料格。

    若要幫助建立 MDX 運算式,在 [編輯 MDX] 旁,請按一下瀏覽按鈕,然後使用出現的 [MDX 產生器] 視窗,來建立您的 MDX 運算式。

    如需用來設定資料格資料權限的 MDX 運算式範例,請參閱<使用 MDX 運算式來設定資料格資料權限>。