症狀
請考慮以下案例:
您在 Microsoft SQL Server 2012 或 SQL Server 2014 中執行 Integration Services 目錄和 SSISDB 目錄的執行個體。
您可以將權限授與 Windows 群組的成員,讓他們能夠存取 SSIS 目錄資料夾、專案或環境的安全性項目。
注意: 您可以透過下列任一方式授予權限:
- 您使用 Management Studio。 若要這樣做,請以滑鼠右鍵按一下 Integration Services 目錄中的物件,選取 [屬性],然後在 [權限 ] 頁面上瀏覽至群組,新增群組,然後選取該群組的權限。
- 呼叫下列預存程序:
[SSISDB]。[目錄]。[grant_permission]
身為 Windows 群組成員的 Windows 使用者嘗試使用 Management Studio 或預存程序,在 Integration Services 目錄中檢視和執行 SSISDB 資料庫中的套件。
在此案例中,使用者無法看到已授與權限的套件,也無法驗證或執行這些套件。
原因
之所以發生這個問題,是因為 SSISDB 內部檢視中的問題。 這會讓使用者在使用 Windows 群組成員資格授與權限時無法擁有預期的有效權限。
解決方式
此問題已先在下列 SQL Server 累積更新中修正。
SQL Server 2014 累積更新 1 /zh-tw/help/2931693
SQL Server 2012 SP1 的累積更新 7 /zh-tw/help/2894115
關於 SQL Server 的累積更新
SQL Server 的每個新累積更新都包含所有 Hotfix 和先前累積更新的所有安全性修正程式。 查看 SQL Server 的最新累積更新:
因應措施
若要解決此問題,請勿使用各種使用者的 Windows 群組來存取 SSIS 安全性保護。 請改為在 SQL Server 中使用使用者定義的資料庫角色來封裝必要的 Windows 使用者清單,然後將權限指派給該資料庫角色。
因應措施步驟
若要這麼做,請按照下列步驟進行:
為 SQL Server 執行個體建立必要的 Windows 登入,然後授與使用者存取 SSISDB 資料庫的權限。 例如,您可以透過移至 [安全性],按一下 [ 登入],然後按一下 [ 新增登入] 來使用 Management Studio。 或者,您可以針對每個 Windows 使用者登入使用以下指令碼:
使用 主機
GO
使用 DEFAULT_DATABASE=MASTER 從 WINDOWS 建立登入網域\使用者名稱
GO
使用 SSISDB
GO
建立使用者\網域使用者名稱用於\登入網域使用者名稱
GO在 SSISDB 資料庫中,建立使用者定義的資料庫角色,例如 ssis_users。 例如,您可以使用 Management Studio,方法是移至 [資料庫],按一下 [SSISDB]、[安全性]、[角色]、[資料庫角色],然後按一下 [新增資料庫角色]。 或者,您可以使用下列指令碼:
使用 SSISDB
GO
建立角色 ssis_users
GO將 SSISDB 中所需的使用者新增至角色ssis_users。 例如,您可以使用 Management Studio,方法是移至 [資料庫],按一下 [SSISDB]、[安全性]、[角色]、[資料庫角色]、[角色成員],然後按一下 [新增]。 或者,您可以使用下列指令碼:
使用 SSISDB
GO
ALTER ROLE ssis_users 新增成員 網域\使用者名稱
GO以滑鼠右鍵按一下 Integration Services 目錄中的安全性物件,按一下 [屬性],然後按一下 [權限] 頁面上的 [ 瀏覽 ],將資料庫角色新增到權限中,然後在想要的明確權限上選取 [ 授與 ] 或 [拒絕 ],如下所示:
注意:這些權限可能不足以成功執行 SSIS 套件。 每個 SSIS 套件都是自訂設計,並且可能有額外的特定需求,才能存取特定的伺服器和資料庫或共用,以成功驗證或執行 SSIS 套件。
狀態
Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。
參考資料
如需詳細資訊,請參閱 Microsoft Developer Network (MSDN) 網站上的下列主題:
SSIS 目錄
資料夾內容對話方塊
[專案內容] 對話方塊
[環境屬性] 對話方塊
請參閱 Microsoft 用來說明軟體更新的 術語 。