代码之家  ›  专栏  ›  技术社区  ›  OpenSource

不存储SQL密码的SSIS连接管理器

  •  29
  • OpenSource  · 技术社区  · 16 年前

    我以前有一个具有SQL Server身份验证连接的DTS。基本上,用户ID密码存储在包本身中。现在,当我转到ssis时,密码不会存储到包中。我在谷歌搜索问题时看到了这一点。 http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/c720e694-2f58-483a-9cd7-3feb7de2db7b 但似乎没有人给出一个好的解决方案。你们中有人能帮忙吗? 提前谢谢

    8 回复  |  直到 7 年前
        1
  •  26
  •   longneck    9 年前

    答案指向本文: http://support.microsoft.com/kb/918760

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

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

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

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

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

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

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

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

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

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

    • 方法5:创建包模板

    对于长期解决方案,请创建使用不同于默认设置的保护级别的包模板。这个问题在将来的包中不会发生。

        2
  •  15
  •   Brick    9 年前

    通过转到属性并添加password=yourpassword,可以将密码存储在配置字符串中。 但非常重要的是在“密码”前和“;”后加一个空格。 如下图所示:

    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;

    希望这有帮助 ——Vijay K

        3
  •  8
  •   Dave Sexton    12 年前

        4
  •  6
  •   onupdatecascade    16 年前

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

    相反,要么使用Windows身份验证,这样就不会在包或配置文件中存储机密,要么,如果在您的环境中确实不可能这样做(例如,您可能没有Windows域),则必须使用中描述的解决方法。 http://support.microsoft.com/kb/918760 (山姆是对的,在那篇文章里再进一步读一读)。最简单的答案是一个与包配套的配置文件,但是你必须担心配置文件是安全存储的,这样别人就不能仅仅读取它并获取凭证。

        5
  •  0
  •   Scoregraphic    11 年前

        6
  •  0
  •   user353gre3    9 年前

    这样做很容易。我不知道为什么人们会给出复杂的答案。

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

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

    对sourceConnectionOldB执行相同操作。

        7
  •  0
  •   Ramanujam Allam    7 年前

    这件事也发生在我身上,并以以下方式解决了:

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

        8
  •  0
  •   MHeath    7 年前

    这里有一个更简单的选择,当我遇到这个的时候它会起作用。

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

    推荐文章