我在 SQL Server 2012 中工作。我已经构建了一个由几个脚本和 2 个数据流任务组成的 SSIS 包。数据流任务将数据从本地 SQL 服务器移出到 Amazon SQL 服务器。
整个包在 Visual Studio 中运行良好。我将它导入到集成服务中的存储包中,我可以从那里成功运行它。
但是,当我设置一个作业并将该 SSIS 包作为唯一的步骤运行时,它会失败。我得到的唯一错误消息是第 1 步失败。我无法解决它失败的原因,因为它可以在 Visual Studio 甚至在集成服务中成功运行。
我之前成功地完成了一个类似的项目,这里有什么不同,我怀疑问题出在数据流任务中。我怀疑与 Amazon SQL Server 的连接失败,密码没有正确传递。同样,我在包中得到了正确的信息,但不知何故它并没有运行。
当 SSIS 包作为作业运行时,谁能指出正确传递身份验证信息的方法?
好吧,我想我明白了。我对此比较陌生,所以请原谅任何不好的术语。
我走上了正确的道路:https ://stackoverflow.com/questions/31755979/storing-password-in-ssis-package
基本上,与 Amazon DB 的外部连接是问题所在。我在 SSIS 包中存储了正确的凭据以建立连接,但默认情况下,敏感信息(例如密码)以特定于创建包的用户的方式加密。所以这个包对我来说运行得很好,但它不适用于其他任何人,包括这份工作。
要解决此问题,您需要更改默认的包保护,为包提供一种主密码,以便任何人只要有包的密码,包就可以正确运行。在项目属性中,您可以找到 ProtectionLevel 并将值切换到另一个选项(我选择“EncryptSensitiveWithPassword”。)您将输入密码,然后系统会提示您更改子包文件。进入包属性并在那里更改保护级别。在上面的行中输入相同的密码。保存。
现在,当您将包导入集成服务时,系统会提示您输入密码。然后,当您设置作业时,系统会再次提示您。但输入密码后,它运行成功。
希望这可以帮助某人。