我有一個SSIS包,從MySQL數據庫獲取數據並將其放入SQL Server表。與MySQL的連接是ADO.net。該包在BIDS中運行良好。SSIS包不是由SQL Server代理使用密碼或XML配置或表配置執行
我想部署包作爲SQL Server 2008上的作業運行.MySQL連接需要將敏感數據存儲在包中或保存在某個外部配置源中。如果它存儲在軟件包中,它將通過使用特定於我的Windows用戶配置文件的密鑰進行加密,或者必須通過密碼進行保護。
我試圖建立一個SQL Server代理作業執行該pacakge的三種方法,所有的失敗:
使用密碼
我設置的包的ProtectionLevel到EncryptSensitiveWithPassword和供應包的密碼。然後我將該包的一個副本保存到msdb。然後,我可以連接到SSIS並運行包,此時會提示輸入密碼。
當我嘗試在SQL Server中將其安排爲一項作業時,系統會提示您通過單擊「作業步驟屬性」的「配置」選項卡輸入密碼,我可以看到/ DECRYPT開關已添加到命令行標籤。 「運行方式」屬性設置爲SQL Server代理服務帳戶,該帳戶映射到具有sysadmin服務器角色的數據庫登錄名。當我嘗試啓動這個工作,我得到以下錯誤:
Executed as user: DOMAIN\UserROLE. Microsoft (R) SQL Server Execute Package Utility Version 10.0.5500.0 for 64-bit Copyright (C) Microsoft Corp 1984-2005. All rights reserved. Started: 12:31:30 Error: 2012-07-03 12:31:31.20 Code: 0xC00291EC Source: Get Data Execute SQL Task Description: Failed to acquire connection "DATA_SOURCE". Connection may not be configured correctly or you may not have the right permissions on this connection. End Error DTExec: The package execution returned DTSER_FAILURE
看來,用這種方法包密碼本身不存儲作業來訪問它。
使用XML配置文件
我然後創建包的副本,並設置的ProtectionLevel到DontSaveSensitive,我設置爲存儲在XML文件中的MySQL的憑據包配置。然後將其保存到msdb,然後當我從 運行包時,我可以提供一個到配置文件的路徑,一切都很好。但是,當我爲包創建一個作業時,我又指向服務器上的配置文件,但作業失敗並出現相同的錯誤。我想知道這是否是因爲SQL Server代理沒有關聯的Windows帳戶,它允許它從存儲在文件系統中的XML文件讀取。
使用SQL Server表配置
這一次,我創建了包的副本和的ProtectionLevel設置爲ServerStorage。然後,我在目標SQL Server數據庫中創建了[SSIS配置]表。我修改了此表中的條目以包含MySQL數據源的密碼。同樣,程序包也可以從Integration Services成功運行,但是在從作業運行時會失敗,並出現與以前相同的錯誤。我已經檢查過SQL Server代理能夠從[SSIS配置]表中讀取ok - 我設置了一個獨立的作業來測試它。
有沒有人有什麼建議我還應該在這裏做什麼?
我正在考慮放棄SQL Server代理作業,然後回去讓軟件包按照Windows調度程序安排,但在扔毛巾之前我想先試試這裏。
謝謝stb。我曾嘗試過關於SQLAgentOperatorRole的建議,但它似乎沒有達到預期的效果。我已經將我的軟件包導入原始軟件包的保護級別。 – cjashwell
我發現了有關您的問題的「常規疑難解答」視頻。也許這有助於:http://technet.microsoft.com/en-us/sqlserver/ff686900.aspx – stb
再次感謝@stb我已經看過視頻,它錯過了我需要看到的關鍵位的細節!我給了MS一些反饋意見。我想我會放棄這一點,只是使用Windows調度程序來安排我的程序包。無論如何欣賞你的時間。 – cjashwell