【问题标题】:SSIS in SQL Server: How to get it to store passwordSQL Server 中的 SSIS:如何获取它来存储密码
【发布时间】:2015-04-06 11:13:22
【问题描述】:

我是一个 Oracle 人,突然把 SQL Server 和 SSIS 丢在了他的腿上,所以我可能没有以正确的方式使用术语,但这里是:

有一个 SSIS 包可将 Oracle 数据库中的数据提取到我们的 SQL Server 2008 R2 仓库中。如果我在 SSIS Visual Studio 2008 中打开此包,系统会提示我输入密码:

“MyRefresh.dtsx”包中的敏感数据使用密码加密。

对于包本身。我输入密码。我运行包。效果很好。 以前的人已经将这个包加载到 SQL Server 中,每天凌晨 1 点运行一个作业,它在那里也很有效。

最近,有一些数据库更改。当然,该软件包停止工作。我能够修复它,如果通过 SSIS Visual Studio 2008 运行,它再次运行良好。但是,当我将它加载到 SQL Server 并运行作业时,它失败了:

0xC001405F 未能解密加密的 XML 节点,因为密码未指定或不正确。

我在哪里/如何指定密码以便作业可以运行?

【问题讨论】:

    标签: sql-server sql-server-2008 ssis sql-server-2008-r2


    【解决方案1】:

    回答较晚,但可能对其他用户/线程访问者有所帮助

    简而言之,要将包加载到 SQL Server,必须使用指定的新凭据导出它,然后再将其导入指定文件夹。

    这是我找到的关于设置SSIS package encryption manually in SSMS 的文章,它提供了有关如何导入/导出加密包的快速教程。

    请注意,保护级别选项在一种情​​况下涉及敏感数据,或者在另一种情况下涉及特定包中包含的所有数据。在 Integration Services 中默认设置被视为敏感的数据:以前标记为微妙、不可更改的 XML 标记的变量,由 SSIS 服务控制,以及密码,如果“使用密码加密所有数据”,则可以被视为敏感数据被选中。

    包保护级别:

    • 不保存敏感数据:如果存在敏感数据,新包导出后不包含,一直不可用;
    • 使用用户密钥加密敏感数据:敏感数据将使用当前用户凭据加密,包仍然可以在本地服务器上使用。哪些数据将被视为敏感数据,取决于包的创建者/所有者;
    • 使用密码加密敏感数据:在此级别,必须提供密码 - 如果用户只想保护敏感数据的私密性,这种加密是可取的。
    • 使用用户密钥加密所有数据:与加密敏感数据相同,可以在本地服务器上使用,但会考虑包内的所有数据;
    • 使用密码加密所有数据:此级别对包内的所有数据进行加密,需要密码,并且提供 100% 的隐私。

    希望这些信息对您有所帮助。

    【讨论】:

      【解决方案2】:

      如果你有机会,我建议你不再使用 EncryptAllWithPassword 保护级别。阅读此处了解有关包加密级别的更多信息:

      http://sqlblog.com/blogs/eric_johnson/archive/2010/01/12/understanding-the-ssis-package-protection-level.aspx

      简而言之,包加密的想法是阻止人们打开包 XML 来提取纯文本密码。但通常这是以不安全的方式实现的,这违背了目的。

      我建议您始终使用 Windows 身份验证:

      1. 确保您的 Oracle 服务器支持外部身份验证
      2. 使用 SQL 代理 windows 服务帐户创建一个外部标识的 Oracle 登录
      3. 在您的 Oracle 连接管理器中,使用外部身份验证(使用用户 / 登录,无需密码)
      4. 如果您有任何 SQL Server 连接管理器,则需要执行相同操作(在 SQL Server 中,这称为 Windows 身份验证)
      5. 最后确保所有开发人员都设置了 SQL Server 中的 Windows 身份验证和 Oracle 中的外部标识身份验证,以便他们可以在 BIDS 中运行包

      现在您不再需要加密您的包(您可以使用DontSaveSensitive)。所有操作的权限都针对 SQL 代理服务帐户。

      您不再需要记住软件包密码或 Orace 登录密码。

      例如,如果您需要在 Oracle 登录时轮换密码,最初您必须在 Oracle 中更改此密码在您的包中。但是通过使用 Windows 身份验证,这不再是必要的了。

      如果你有兴趣,我可以给你更多信息。

      【讨论】:

      • ...实际上我提供的链接主要是模仿微软的信息,并没有解释太多,但至少它提供了一个概述。
      【解决方案3】:

      您可以使用/de 开关和dtexec 实用程序作为您的密码,如下所示:

      dtexec /f <filename> /de <password>
      

      【讨论】:

      • 我实际上找到了我认为是相同的解决方案。我进入 SQL Server 中的包,看到了 DECRYPT 开关并为其添加了密码。我现在可以在 SQL Server 中运行该包。是否会保存对命令行的更改?
      猜你喜欢
      • 1970-01-01
      • 2010-10-26
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-19
      相关资源
      最近更新 更多