2

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

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

一堆网站说要使用配置文件,但是当我走那条路时,它完全破坏了工作,抱怨无法建立 OLEDB 连接。在那种情况下,我什至无法在本地机器上运行该作业。

其他一些站点建议将包复制到机器上的本地 ssis 包存储中,但我只能通过 SQL Server Tools 访问机器,我无法远程进入或在文件系统上安装任何东西,所以我必须通过安装清单文件使用 SSIS 部署过程。

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

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

这是一个内部服务器,安全性并不是一个大问题,知道如何以明文形式传递解密密码,或者只是告诉 SSIS 不要费心保护敏感数据吗?

4

3 回答 3

2

诀窍是:

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

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

或者,您可以更改连接,使其使用集成安全性(Windows 身份验证而不是 sql 登录)并更改作业,使其以有权访问数据库和视图的用户身份执行包,该用户由包查询。这是首选选项,因为您在任何地方都不需要密码,而是通过用户身份和权限进行管理。

于 2012-06-15T17:10:16.493 回答
0

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

于 2011-01-07T21:27:46.630 回答
0

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

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

于 2011-01-07T21:13:51.443 回答