iT邦幫忙

0

SQL Server Agent 排程遇到的問題

目前透過 sql server Agent job 執行 SSIS ,一直有權限的問題困擾,
我的 ETL 來源資料自 mysql 資料庫,所以我將 執行 sql server Agent job 的 owner
設定與連線mysql 資料庫的使用者帳號及密碼一致,在 sql server 也同樣新增此帳號,
也擁有對sql server db access 的權限。

將 SSIS 存放在 Integration Service 的封裝區,並以手動方式執行封裝程序,是可以順利的執行完成,
但透過 sql server agent 來執行此 Integration Service 的封裝區 ,就會產生權限的問題,不知是否還有其他的方法 ?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

20
funkent
iT邦高手 1 級 ‧ 2009-01-08 17:45:41
最佳解答

方法 1:使用 SQL Server Agent Proxy 帳戶
建立 SQL Server Agent Proxy 帳戶。這個 Proxy 帳戶必須使用認證,讓 SQL Server Agent 像建立封裝的帳戶或具有必要權限的帳戶一樣執行作業。

這個方法可用於解密並滿足使用者的金鑰需求。然而,這種方法的成功可能有限,因為 SSIS 封裝使用者金鑰包含目前使用者和目前電腦。因此,如果您將封裝移到另一台電腦,即使作業步驟使用正確的 Proxy 帳戶,這種方法仍然可能會失敗。

方法 2:將 SSIS 封裝 ProtectionLevel 屬性設定為 ServerStorage
將 SSIS 封裝 ProtectionLevel 屬性變更為 ServerStorage。這個設定會透過 SQL Server 資料庫角色將封裝儲存在 SQL Server 資料庫中並允取存取控制。
方法 3:將 SSIS 封裝 ProtectionLevel 屬性設定為 EncryptSensitiveWithPassword
將 SSIS 封裝 ProtectionLevel 屬性變更為 EncryptSensitiveWithPassword。這個設定會使用密碼進行加密。然後您可以將 SQL Server Agent 作業步驟命令列修改為加入這個密碼。
方法 4:使用 SSIS 封裝設定檔案
使用 SSIS 封裝設定檔案來儲存機密資訊,然後將這些設定檔案儲存在受安全保護的資料夾中。接著您可以將 ProtectionLevel 屬性變更為 DontSaveSensitive,讓封裝不會加密也不會嘗試將機密儲存在封裝中。當您執行 SSIS 封裝時,會從設定檔案載入必要的資訊。如果設定檔案含有機密資訊,確定它們會受到適當的保護。
方法 5:建立封裝範本
如需長期的解決方案,請建立使用與預設設定不同保護等級的封裝範本。這個問題將不會發生在未來的封裝中。

12
old7ada
iT邦研究生 2 級 ‧ 2009-01-08 09:54:02

試試看下面的設定,
將啟動sql server agent service 的windows 帳號,加到目的端server的local admin 群組。如果可行,代表是該啟動帳號對目的端server的的權限不足(縮小問題的範圍,找出原因)。

再判斷該job會需要哪些目的端server的權限(因為我不知道你的job會對目的端server做甚麼動作)。例如只是做備份,那目的端server的備份資料夾要給 "啟動sql server agent service 的windows 帳號" 有寫入的權限。判斷然後將帳號從目的端server的local admin 群組移除,只給該帳號需要的權限即可。

sallyhsu iT邦新手 5 級 ‧ 2009-01-08 14:17:41 檢舉

權限都有但是就是不work

遇到的問題好像完全一樣
" 將 SSIS 存放在 Integration Service 的封裝區,並以手動方式執行封裝程序,是可以順利的執行完成,
但透過 sql server agent 來執行此 Integration Service 的封裝區 ,就會產生權限的問題,不知是否還有其他的方法 "

但是最佳解答的方法都試過了,也沒成功嗚嗚 我是SQLServer24014

我要發表回答

立即登入回答