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

问题描述:

我曾经有一个有SQL服务器认证连接的dts。基本上,用户名密码存储在程序包本身中。现在,当我去SSIS时,密码不会被存储到包中。当我谷歌问题时,我看到了这个。 http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/c720e694-2f58-483a-9cd7-3feb7de2db7b 但似乎没有人给出好的解决方案。你们能帮助任何人吗? 在此先感谢SSIS连接管理器不存储SQL密码

+0

是的,我认为我们需要去Windows验证...谢谢所有 – OpenSource 2009-08-14 18:10:45

这个答案指向这篇文章:http://support.microsoft.com/kb/918760

下面是提出的解决方案 - 你评价他们?

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

创建一个SQL Server代理代理帐户。此代理帐户必须使用凭证,使SQL Server代理可以将作业作为创建程序包的帐户或具有所需权限的帐户运行。

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

  • 方法2:将SSIS包ProtectionLevel属性来ServerStorage

更改SSIS包ProtectionLevel属性来ServerStorage。此设置将程序包存储在SQL Server数据库中,并允许通过SQL Server数据库角色进行访问控制。 回到顶端

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

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

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

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

  • 方法5:创建包模板

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

+0

我看到那个链接 - 它没有处理这个特定的问题。我的问题是以前在DTS连接中,您可以将用户ID /密码存储在包内,但在SSIS中显然我们不能。该链接正在讨论从SQL代理中的作业运行包。 – OpenSource 2009-08-13 22:58:32

+1

也许您可以将DTS设置为使用NTLM并让它通过代理帐户。 – Sam 2009-08-14 01:25:29

+0

不知道该选项是否存在。 – Sam 2009-08-14 01:26:01

SSIS中的设计行为是为了防止在包中存储密码,因为这样做是不好的做法/不安全。如果你的环境中真的不可能存在秘密(例如,你可能没有Windows域),那么你必须使用解决方法如http://support.microsoft.com/kb/918760中所述(Sam的正确,请在该文章中进一步阅读)。最简单的答案是一个配置文件,以便随软件包一起使用,但是您必须担心配置文件安全存储,因此某人不能只读取它并取得凭据。

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

请检查项目配置文件,设置ID和密码的出现,让你执行包

您可以通过属性和增加密码=你​​的密码但很存储配置字符串中的密码重要的是在“密码”字和“之后”之前放置空格;如下所示:

Data Source=50.21.65.225;User ID=vc_ssis; [email protected]; 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ķ

+0

此答案帮助了我。 – Kalim 2016-10-12 10:18:28

+0

帮助了我。可能不是刺激的最佳选择,但适用于测试 – 2016-11-09 14:59:28

+0

我不能相信像多余的空间重要的东西。再一次,我一直在编码的时间足够长,我可以相信它。谢谢! – hurleystylee 2018-01-25 14:25:24

有这样做的简单方法。我不知道为什么人们给出了复杂的答案。

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

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

为SourceConnectionOLDB做相同。