【问题标题】:SSIS Connection Manager Not Storing SQL PasswordSSIS 连接管理器不存储 SQL 密码
【发布时间】:2010-11-19 10:23:36
【问题描述】:

我曾经有一个dts,它有一个 sql server 身份验证连接。基本上,用户 ID 密码存储在包本身中。现在,当我转到SSIS 时,密码没有存储到包中。我在谷歌上搜索问题时看到了SSIS Connection Manager passwords,但似乎没有人给出好的解决方案。

【问题讨论】:

  • 是的,我认为我们需要进行 Windows 身份验证...谢谢大家

标签: sql-server sql-server-2005 ssis


【解决方案1】:

那个答案指向这篇文章:http://support.microsoft.com/kb/918760

以下是建议的解决方案 - 您评估过吗?

  • 方法 1:使用 SQL Server Agent 代理帐户

创建一个 SQL Server 代理代理帐户。此代理帐户必须使用允许 SQL Server 代理以创建包的帐户或具有所需权限的帐户运行作业的凭据。

此方法用于解密机密并满足用户的密钥要求。但是,此方法的成功可能有限,因为 SSIS 包用户密钥涉及当前用户和当前计算机。因此,如果将程序包移动到另一台计算机,即使作业步骤使用正确的代理帐户,此方法仍可能失败。 回到顶部

  • 方法 2:将 SSIS 包 ProtectionLevel 属性设置为 ServerStorage

将 SSIS 包 ProtectionLevel 属性更改为 ServerStorage。此设置将包存储在 SQL Server 数据库中,并允许通过 SQL Server 数据库角色进行访问控制。 回到顶部

  • 方法 3:将 SSIS 包 ProtectionLevel 属性设置为 EncryptSensitiveWithPassword

将 SSIS 包 ProtectionLevel 属性更改为 EncryptSensitiveWithPassword。此设置使用密码进行加密。然后,您可以修改 SQL Server 代理作业步骤命令行以包含此密码。

  • 方法四:使用 SSIS 包配置文件

使用 SSIS 包配置文件存储敏感信息,然后将这些配置文件存储在安全文件夹中。然后,您可以将 ProtectionLevel 属性更改为 DontSaveSensitive,这样包就不会被加密并且不会尝试将机密保存到包中。当您运行 SSIS 包时,将从配置文件中加载所需的信息。如果配置文件包含敏感信息,请确保它们受到充分保护。

  • 方法五:创建包模板

对于长期解决方案,请创建一个使用不同于默认设置的保护级别的包模板。以后的包中不会出现这个问题。

【讨论】:

  • 我看到了那个链接——它不处理这个特定的问题。我的问题以前在 DTS 连接中,您可以将用户 ID/密码存储在包内,但在 SSIS 中显然我们不能。该链接正在讨论从 sql 代理中的作业运行包。
  • 也许您可以将 DTS 设置为使用 NTLM 并让它从代理帐户通过。
  • 不确定是否有该选项。
  • 是否应该在设计时更新包配置中的密码?它甚至应该如何工作?
  • Package Deployment Model 和敏感的项目级参数是什么情况?这些得救了吗?有适合他们的设置吗?
【解决方案2】:

您可以通过转到属性并添加password=yourpassword来将密码存储在配置字符串中,但是在password之前和@987654324之后的行上的;之后放置一个空格非常重要@在password行上,如下图:

Data Source=50.21.65.225;User ID=vc_ssis; 
password=D@mc317Feo; 
Initial Catalog=Sales;
Provider=SQLNCLI10.1;
Persist Security Info=True;Auto Translate=False;
Application Name=SSIS-PKG_CustomerData-{2A666833-6095-4486-C04F-350CBCA5C49E}IDM11.Sales.dev;

【讨论】:

  • 这个答案对我有帮助。
  • 也帮助了我。可能不是 prod 的最佳选择,但适用于测试
  • 我无法相信像额外空格这样特别重要的事情。再说一次,我在编码方面已经足够长的时间了,我可以相信它。谢谢!
  • 我很震惊,这是答案,但非常感谢!!!
【解决方案3】:

我使用一个变量来存储整个连接字符串并将其传递给 ConnectionString 表达式。这会覆盖连接的所有设置并允许您存储密码。

【讨论】:

    【解决方案4】:

    SSIS 中的设计行为是防止将密码存储在包中,因为这样做是不好的做法/不安全。

    相反,要么使用 Windows 身份验证,因此您不会将机密存储在包或配置文件中,或者,如果这在您的环境中确实不可能(例如,您可能没有 Windows 域),那么您必须使用一种解决方法如http://support.microsoft.com/kb/918760 中所述(Sam 是正确的,请在该文章中进一步阅读)。最简单的答案是随软件包一起提供一个配置文件,但您必须担心配置文件是安全存储的,因此有人无法读取它并获取凭据。

    【讨论】:

      【解决方案5】:

      请检查项目中的配置文件,在那里设置ID和密码,以便执行包

      【讨论】:

        【解决方案6】:

        它也发生在我身上,并通过以下方式修复:

        创建基于表达式的连接字符串并将密码保存在变量中并使用它。

        【讨论】:

          【解决方案7】:

          尝试将连接字符串与密码一起存储在一个变量中,并使用表达式在连接字符串中分配变量。我也遇到了同样的问题,我像 dis 一样解决了。

          【讨论】:

            【解决方案8】:

            检查连接管理器文件本身的文本内容,密码字段可能在Project.params文件中配置,在这种情况下,在连接管理器窗口中输入密码将导致它不保存。

            【讨论】:

            • 帮助您提及如何访问连接管理器文件。
            【解决方案9】:

            当我遇到这种情况时,这是一个更简单的选项。

            创建连接后,选择连接并打开属性。在表达式类别中找到密码。重新输入密码并按 Enter。它现在将被保存到连接中。

            【讨论】:

              【解决方案10】:

              有一种简单的方法可以做到这一点。我不知道为什么人们给出复杂的答案。

              双击 SSIS 包。然后转到连接管理器,选择 DestinationConnectionOLDB,然后在登录字段旁边添加密码。

              示例:Data Source=SysproDB1;User ID=test;password=test;Initial Catalog=ASBuiltDW;Provider=SQLNCLI11;Auto Translate=false;

              对 SourceConnectionOLDB 执行相同操作。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2022-01-18
                • 2012-05-19
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2020-07-22
                相关资源
                最近更新 更多