none
[SQL Server2005]無法刪除 AS 角色 RRS feed

  • 問題

  • 之前因為測程式,所以在 AS 資料庫下建立了一個角色(Role)

    但由於當時程式還有點問題,所以就把程式中斷掉了,但建立的角色尚未刪除掉

    之後透過 SQL Server Management Studio 管理介面登入 AS 資料庫中

    欲手動刪除該角色,但刪除時卻發生錯誤,無法刪除該角色

    可是修改該角色的權限卻可以,甚至另外再新建其他角色及刪除也都是可行的

    唯獨此角色刪除時會產生錯誤訊息而無法刪除,甚至將Service重開後再試還是一樣

    因此想請問是否有何方法能將之強制刪除??

     

     

    錯誤訊息如下

     

            <Error ErrorCode="3239313426" Description="中繼資料管理員有錯誤。 識別碼為 'CubePermission 1',名稱為 'CubePermission 1' 的 cube permission,在交易中被作業驗證為無效。" Source="Microsoft SQL Server 2005 Analysis Services" HelpFile="" />
            <Error ErrorCode="3239313417" Description="中繼資料管理員有錯誤。 無法認可交易,因為在交易期間有一或多個物件無效。" Source="Microsoft SQL Server 2005 Analysis Services" HelpFile="" />

    2007年7月17日 上午 10:02

解答

  • 終於找到原因了,提供大家做參考

     

    當初我用程式的方式去新增一個 Role 的 CubePermissions 如下

    Code Snippet

    CubePermission = Cube.CubePermissions.Add(Role.ID)

     

    並開放了 CubePermission 的權限

    Code Snippet

    CubePermission.Read = ReadAccess.Allowed
      CubePermission.ReadSourceData = ReadSourceDataAccess.Allowed
      CubePermission.Update()

     

    最後做更新
      

    Code Snippet
    CubePermission.Update()

     

    後來我再試著把此權限給取消,但犯了一個錯,就是再新增一個 CubePermission

    Code Snippet

    CubePermission = Cube.CubePermissions.Add(Role.ID)

     

    正確做法應該是尋找之前的 CubePermission 來修改,如下

    Code Snippet

    CubePermission = Cube.CubePermissions.FindByRole(Role.ID)

    CubePermission.Read = ReadAccess.None
      CubePermission.ReadSourceData = ReadSourceDataAccess.None
      CubePermission.Update()

     

    因此,由於多增加了一個 CubePermission,所以在刪除這個 Role 的時候才會失敗

    後來透過程式,將多的那個 CubePermission 刪除後,即可刪除該 Role

    刪除 CubePermission,請用 CubePermission.Drop()

     

     

    2007年7月18日 上午 09:59

所有回覆

  • hi

     

    您可以先查看該角色的屬性,

    看看該角色是否有部分屬性內容與 AS內容有所出入。

     

     

    2007年7月18日 上午 02:31
  • 你好,我理解力較差,其實我不太懂你說的

    "該角色是否有部分屬性內容與 AS內容有所出入" 這句話,不知道是不是可以再說明詳細一點,謝謝。

     

    因為我去看那個角色的屬性,覺得跟其他另外手動新增的並沒有什麼不同,而且該角色的屬性若要修改的話也是OK的

    就只有刪除時會出現上述錯誤訊息。

    2007年7月18日 上午 06:22
  • 終於找到原因了,提供大家做參考

     

    當初我用程式的方式去新增一個 Role 的 CubePermissions 如下

    Code Snippet

    CubePermission = Cube.CubePermissions.Add(Role.ID)

     

    並開放了 CubePermission 的權限

    Code Snippet

    CubePermission.Read = ReadAccess.Allowed
      CubePermission.ReadSourceData = ReadSourceDataAccess.Allowed
      CubePermission.Update()

     

    最後做更新
      

    Code Snippet
    CubePermission.Update()

     

    後來我再試著把此權限給取消,但犯了一個錯,就是再新增一個 CubePermission

    Code Snippet

    CubePermission = Cube.CubePermissions.Add(Role.ID)

     

    正確做法應該是尋找之前的 CubePermission 來修改,如下

    Code Snippet

    CubePermission = Cube.CubePermissions.FindByRole(Role.ID)

    CubePermission.Read = ReadAccess.None
      CubePermission.ReadSourceData = ReadSourceDataAccess.None
      CubePermission.Update()

     

    因此,由於多增加了一個 CubePermission,所以在刪除這個 Role 的時候才會失敗

    後來透過程式,將多的那個 CubePermission 刪除後,即可刪除該 Role

    刪除 CubePermission,請用 CubePermission.Drop()

     

     

    2007年7月18日 上午 09:59