【问题标题】:How to use DontSaveSensitive and xml configuration file during SSIS package developmentSSIS包开发过程中如何使用DontSaveSensitive和xml配置文件
【发布时间】:2013-03-20 11:27:34
【问题描述】:

是否可以将 SSIS 包的 ProtectionLevel 设置为 DontSaveSensitive在 Visual Studio 中的包开发期间使用配置文件中的连接字符串和密码

我有包裹,例如ProtectionLevel = DontSaveSensitive 的包 1。这个包使用来自连接管理器的连接,例如连接1

Package1 已启用配置,使用配置文件 file1.dtsConfig 并指定了连接字符串。 此连接字符串中包含密码:

<DTSConfiguration>
    <DTSConfigurationHeading>
        <DTSConfigurationFileInfo GeneratedBy="..." GeneratedFromPackageName="..." GeneratedFromPackageID="..." GeneratedDate="20.3.2013 12:08:27"/>
    </DTSConfigurationHeading>
    <Configuration ConfiguredType="Property" Path="\Package.Connections[Destination].Properties[ConnectionString]" ValueType="String">
        <ConfiguredValue>Data Source=.;Password=Password123;User ID=MyUser;Initial Catalog=Catalog;Provider=SQLNCLI10.1;Persist Security Info=True;Auto Translate=False;</ConfiguredValue>
    </Configuration>
</DTSConfiguration>

现在从 Visual Studio 中的连接管理器打开连接时,密码的文本字段留空,并且包不执行。 为什么没有使用配置文件file1.dtsConfig中连接字符串中指定的密码?

【问题讨论】:

    标签: ssis configuration-files


    【解决方案1】:

    我们终于找到了一种方法:

    • 将 ProtectionLevel 更改为 DontSaveSensitive
    • 使用连接字符串创建配置文件
    • 手动编辑此配置文件:将密码添加到连接字符串中,以防您使用 SQL Server 身份验证进行连接

    然后SSIS包即使在Visual Studio中也会从配置文件中加载包含连接字符串的密码。在连接管理器-连接对话框中,密码不会显示,但包使用配置中的连接字符串运行。

    【讨论】:

    • 使用EncryptSensitiveWithUserKey的问题是当你将你的包分享给其他人或其他用户试图运行你的包时,执行将fail。当您没有计划部署您的包或将您的包与您的团队集成或授予其他用户运行您的包的权限时,您应该使用此选项来将它部署到 sql server 或文件系统中
    • 好吧,但我现在正在使用另一台 PC 上的另一个用户创建的包,并在我的 PC 上设置 EncryptSensitiveWithUserKey。当我指定配置文件时,连接字符串现在从配置中读取(而不是从包中)并且包运行正常,即使保护级别设置为 EncryptSensitiveWithUserKey 并且我不是包的作者。
    • 这看起来很奇怪。查看这篇文章mssqltips.com/sqlservertip/2091/…
    • 我在 SO 上发布这个问题之前阅读了这篇文章。它的好文章,但是当启用包配置时,它没有说任何关于 ProtectionLevel 的内容。在这里msdn.microsoft.com/en-us/library/cc895212.aspx 您可以阅读:“当您向包添加配置时,您基本上是在公开包属性并允许使用来自文件的新值来更新它们......”。如果您“公开”连接字符串并在配置文件中手动为其添加密码,则将使用这些连接字符串。明天我会做更多的测试......
    【解决方案2】:

    SSIS 将仅在 runtime 期间从 Config File 获取连接字符串。即使您选中复选框 Save my Password ,SSIS 也不会保存密码值。此选项仅在 BIDS session 期间有效.所以下次当你使用BIDS打开包时,你需要再次在Visual Studio中输入凭据,否则包不会compile,但是如果你指定了包在run time期间将始终正确执行connection string 中的 config file

    根据MSDN,它明确指出

    不保存敏感:阻止标记为敏感的属性 从与包一起保存,因此使敏感 其他用户无法获得数据。

    【讨论】:

      【解决方案3】:

      当包首先设置为使用 EncryptSensitiveWithUserKey,然后更改为 DontSaveSensitive 保护级别时也是如此。您必须手动编辑 .conmgr 文件并删除 DTS:Password 元素并将密码放入连接字符串中,正如用户 dee 在上面明智地写的那样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-02
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多