2009年12月20日 星期日

非sysadmin在SSMS中開啟Data Transformation Services的錯誤

資料庫為SQL 2000,只要在SQL Server 中有有效的登入權限的使用者,用Enterprise Manager(EM)開啟本機封裝不會有問題,不需要額外設定權限,但同樣的使用者若是用SQL 2005以後的管理工具SSMS中開啟舊版的Data Transformation Services就會跳出如下錯誤

SELECT 使用權限在物件 'sysdtspackages',資料庫 'msdb',擁有者 'dbo' 上被拒絕。 (Microsoft SQL Server, 錯誤: 229)


一查還真的沒有設定權限呢,可是為什在EM可以,在SSMS不行呢,這應該是BUG吧,上網查解決辦法就是在sysdtspackages加權限囉,看是間接加給角色或是直接加給使用者,要不然就只用EM編輯DTS囉,不過個人覺得額外加權限總是有安全性顧慮的,因為原本不用啊

想想該不會是兩個工具背後使用的方式不同?於是我出動Query Analyzer去追蹤囉

原來用EM開時,程式會執行下列程式去撈所有DTS資料
exec msdb..sp_enum_dtspackages
sp_enum_dtspackages是預設大家都有EXEC的權限

而用SSMS會直接下一大串指令直接取得sysdtspackages的資料
問題預設沒有權限啊,所以會跳出錯誤囉

我想這應該是BUG

0 意見:

張貼留言