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

问题描述 投票:0回答:10

我曾经有一个使用 SQL Server 身份验证的 DTS 包。用户 ID 密码存储在包本身中。现在我已经转移到 SSIS,密码没有存储到包中。当我用谷歌搜索这个问题时,我看到了SSIS连接管理器密码,但似乎没有人给出一个好的解决方案。

sql-server sql-server-2005 ssis
10个回答
29
投票

您可以通过转到属性并添加

password=yourpassword
将密码存储在配置字符串中,但在
;
之前和
password
之后的行中的
;
之后放置一个空格非常重要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;
    

27
投票
该答案指向这篇文章:

http://support.microsoft.com/kb/918760

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

    方法1:使用SQL Server Agent代理帐户
创建 SQL Server Agent 代理帐户。此代理帐户必须使用允许 SQL Server 代理以创建包的帐户或具有所需权限的帐户的身份运行作业的凭据。

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

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

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

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

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


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


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

相反,要么使用 Windows 身份验证,这样您就不会在包或配置文件中存储机密,或者,如果这在您的环境中确实不可能(例如,可能您没有 Windows 域),那么您必须使用所述的解决方法在

http://support.microsoft.com/kb/918760(Sam 是正确的,只需进一步阅读该文章)。最简单的答案是与包一起使用的配置文件,但是您必须担心配置文件是否安全存储,因此其他人无法读取它并获取凭据。


0
投票
请检查项目中的配置文件,设置ID和密码,以便执行包


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


-1
投票
我也遇到过这种情况,并通过以下方式修复:

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


-1
投票
这是一个更简单的选项,当我遇到这种情况时可以使用。

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


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


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

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

示例:

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



对 SourceConnectionOLDB 执行相同操作。

© www.soinside.com 2019 - 2024. All rights reserved.