部署SSIS包并保留连接密码

时间:2011-01-07 16:47:12

标签: sql-server ssis sql-server-agent

我有一个SSIS包,用于查询某些记录的视图,然后使用数据库邮件发送电子邮件。我想将包部署到这些视图所在的SQL Server,然后使用SQL Server Agent安排我们,但我遇到了很多问题。

主要问题是,在作业中有一个连接管理器,它存储了可以访问视图和电子邮件配置文件的SQL Server帐户的凭据。我已经将软件包设置为EncryptSensitiveWithPassword而不是User Key,但我似乎无法找到任何方法在运行作业时将该密码实际传递给SQL Server代理。因此,当它执行时失败,因为它无法连接。

许多网站都说使用配置文件,但是当我走这条路线时,它完全抱怨无法建立OLEDB连接。在那种情况下,我甚至无法在本地机器上运行该作业。

其他一些网站建议将软件包复制到计算机上的本地ssis软件包商店,但我只能通过SQL Server Tools访问该机器,我无法远程访问或在文件系统上安装任何东西,所以我有使用SSIS部署过程通过清单文件进行安装。

我已经阅读了有关在另一个数据库表中存储设置的内容,但这再次出现了服务器权限问题。

最后我尝试在作业调度程序中传递/ password或/ decrypt,但是当我单击确定时,调度程序会删除该参数。

这是一个内部服务器,安全性并不是一个大问题,任何想法我怎么能以明文传递解密密码或只是告诉SSIS不打扰保护敏感数据?

3 个答案:

答案 0 :(得分:1)

诀窍是:

  • 在SQL Server Business Intelligence Studio中保存包时,请确保包属性> ProtectionLevel设置为EncryptSensitiveWithUserKey。
  • 将SSIS包导入SQL Server时(从SQL Mgmt Studio>对象浏览器> [服务器] Integration Services>存储包> MSDB>右键单击>导入包>设置包位置到文件系统,在包路径中选择文件,然后选择“依靠服务器存储和访问控制角色”选项。我猜想在导入.dtsx文件时您必须以保存.dtsx文件的同一用户身份登录。

这意味着密码随包一起保存,因此可以在任何人执行包时使用。如果这是你不希望任何人执行你的东西,那么适当地锁定安全性。

或者,您可以更改连接,以便它使用集成安全性(Windows身份验证而不是SQL登录)并更改作业,以便它以具有数据库访问权限的用户身份执行程序包。查看包裹查询。从您不需要密码的角度来看,这是首选选项,而是通过用户身份和权限进行管理。

答案 1 :(得分:0)

听起来好像在使用配置文件时,您没有正确设置配置文件。

在本地运行时,您收到的确切错误是什么?我可以尝试重新创建这个问题。

答案 2 :(得分:0)

您是否在出价中设置了用于存储密码的包,然后将包保存到ssis并告诉它加密密码?如果您没有在本地保存它们,可能是您丢失了密码,然后在没有它们的情况下推送它。