部署 SSIS 包并保留连接密码

Posted

技术标签:

【中文标题】部署 SSIS 包并保留连接密码【英文标题】:Deploying SSIS Package and retaining a connection password 【发布时间】:2011-01-07 16:47:12 【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

【参考方案1】:

诀窍是:

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

这意味着密码与包一起保存,因此可以在任何人执行包时使用。如果您不想让任何人执行您的操作,请适当锁定安全性。

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

我所做的只是右键单击控制流并选择包配置,然后启用包配置。添加一个新的 XML 配置文件 (config.dtsConfig) 并将我的连接管理器添加到复选框选项中的配置中。当我运行它时,我得到“获取后续记录时出错 - SSIS 错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER”以及更多不适合此框的文本。【参考方案3】:

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

【讨论】:

不确定什么是出价。我将连接管理器设置为保存我的密码。然后将整个包设置为 EncryptSensitiveWithPassword 的 ProtectionLevel。但似乎没有办法在 sql server 代理中提供该密码。 bids 是商业智能开发工作室,又名 Visual Studios。你是如何创建包的?

以上是关于部署 SSIS 包并保留连接密码的主要内容,如果未能解决你的问题,请参考以下文章

我们可以在 SQL Server 中使用 Attunity oracle 连接部署 SSIS 吗?

SSIS 部署变量问题

SSIS包部署-DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER

SSIS2012 项目部署模型

SSIS 包配置

SSIS 包配置