使用保護級別 EncryptSensitiveWithPassword 將 SSIS 包部署和執行到 SQL Server
我有一個 SSIS 包,它連接到 SQL Server 實例和 MySQL 實例,因此它可以將數據從 SQL Server 提供給 MySQL 實例。當我將此包部署到 SQL Server 並從 SSMS 執行它時,一切正常。當我嘗試將此包作為作業執行時,它由 SQL Server 代理服務帳戶執行,它壞了。我發現這是因為我使用 EncryptSensitiveWithUserKey 作為包保護級別,除非我是執行它的人,否則它總是會失敗。好的。
因此,在其他保護級別中,我嘗試使用 EncryptSensitveWithPassword。在我從 Visual Studio 執行的 SSDT 中,我沒有將 ServerStorage 作為保護級別的選項。
這為我打開了一個不同的問題。將包部署到 SQL Server 並使用 SSMS 執行它後,**如何將密碼插入作業?**我已經將命令行視為一個選項。這是在 SSMS 中執行此操作的唯一方法嗎?
如果我需要將命令行用作選項,則它要求包源是 SSIS Package Store 而不是 SSIS Catalog。如果在嘗試將 SSMS 連接到集成伺服器時出現“未註冊類”錯誤,這最終會成為一個問題——但這不是重點。
只有幾週接觸 SSIS,我想知道的基本概念問題是,我有哪些選擇(以及如何去做)在 SQL Server 上的 SSIS 包中為我自己以外的使用者啟用 MySQL 連接?
(僅供參考,我使用的是 SQL Server 2014,它上面有 Integration Services 2005,我知道版本不匹配會導致“類未註冊”錯誤。)
補充:是否有任何完全不同的方法可以為 SQL Server 代理執行的包提供數據源密碼?如果我選擇 DontEncryptSensitive 作為保護級別,是否可以在作業步驟屬性中提供數據源密碼?
您可以嘗試以下操作:
- 使用 EncryptSensitiveWithUserKey - 使用與執行代理作業相同的 ID 部署項目(我總是使用創建的 SSIS 代理帳戶)。此外,將作業所有者更改為相同的 ID 或 SysAdmin。
- 您可以嘗試通過 T-SQL 程式碼執行該包(對此有儲存過程)。
- 嘗試在 agent 中使用命令行選項來執行 dtexec 來執行包。
當我使用“文件系統”的包源部署使用“EncryptSensativeWithPassword”的 SSIS 包時,只要我最初瀏覽到包或隨後更改“設置值”,我就會收到提示輸入密碼。
最近,移動到新伺服器時沒有發生這種情況。我覺得這有點奇怪,但直到我所有受密碼保護的軟體包都開始失敗後才進一步思考這種情況。該錯誤也不是很有幫助。“包裹已用密碼加密。密碼未指定,或不正確”
我可以通過 Visual Studio 讓它工作,但就是這樣。其他什麼都沒有改變,那會是什麼?事實證明,如果您不授予代理帳戶對包 (*.dtsx) 的完全權限,就會發生這種情況。
我希望這篇文章會被其他人找到並幫助他們。