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

时间:2009-08-13 19:27:08

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

我曾经有一个有sql server身份验证连接的dts。基本上,用户标识密码存储在包本身中。现在当我去SSIS时,密码没有存储到包中。当我谷歌问题时,我看到了这一点。 http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/c720e694-2f58-483a-9cd7-3feb7de2db7b 但似乎没有人给出好的解决方案。你们有人可以帮忙吗? 提前致谢

10 个答案:

答案 0 :(得分:26)

该答案指向了这篇文章: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属性更改为DontSaveSensitive,以便该包未加密,并且不会尝试将密钥保存到包中。运行SSIS包时,将从配置文件中加载所需的信息。如果配置文件包含敏感信息,请确保配置文件得到充分保护。

  • 方法5:创建包模板

要获得长期解决方案,请创建一个使用与默认设置不同的保护级别的包模板。将来的软件包中不会出现此问题。

答案 1 :(得分:15)

您可以通过转到属性并添加password = yourpassword 来将密码存储在配置字符串中,但非常重要的是在密码'之前加上空格。单词和之后&#39 ;;' 如下所示:

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

答案 2 :(得分:8)

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

答案 3 :(得分:6)

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

相反,要么使用Windows身份验证,所以你不要在软件包或配置文件中存储机密,或者,如果你的环境中真的不可能(例如,你没有Windows域),那么你必须使用一个变通方法正如http://support.microsoft.com/kb/918760中所述(Sam的正确,只是在那篇文章中进一步阅读)。最简单的答案是配置文件与包一起使用,但是你必须担心配置文件是安全存储的,所以有人不能只是阅读它并获取凭据。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

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

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

对SourceConnectionOLDB执行相同的操作。

答案 6 :(得分:0)

它也发生在我身上并按照以下方式修复:

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

答案 7 :(得分:0)

这是一个更简单的选项,当我遇到这个时可以使用。

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

答案 8 :(得分:0)

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

答案 9 :(得分:0)

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