首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SSIS错误代码DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER-已尝试所有方法

SSIS错误代码DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER-已尝试所有方法
EN

Stack Overflow用户
提问于 2019-06-26 23:43:23
回答 1查看 1K关注 0票数 2

我已经创建了一个SSIS包,并且正在尝试在本地运行它。我们使用指向sql表和XML配置文件的包配置。该包成功运行了大约一周,即使在我们的STAGE环境中部署到SQL Server代理作业时也是如此。

现在,让包运行的唯一方法是不使用包配置并选择EncryptSensitivewithPassword。如果我将程序包更改为DontSaveSensitive,我会不断得到以下错误:

有OLE DB记录可用。来源:"Microsoft SQL Server Native Client 11.0“Hresult: 0x80040E4D描述:”用户‘Test_ user’登录失败。“错误: 0xC020801C在AgentCompany,Lookup 37: SSIS错误代码DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER.对连接管理器“测试”的AcquireConnection方法调用失败,错误代码为0xC0202009。在此之前可能会发布错误消息,其中包含有关AcquireConnection方法调用失败原因的更多信息。

奇怪的是,大约一周前,这个包使用配置和DontSaveSensitive选项运行得很好。

我已经更新了配置文件,以确保它正在建立到适当数据库的连接字符串。我还测试了连接管理器上的连接性,它们都测试成功。

我还仔细检查了用户尝试连接的SQL数据库,以确保它在那里有权限,它确实有权限。

我很困惑。请帮帮我!

更新dtsconfig文件重新创建连接管理器使一些DFT任务DelayValidation为true将RunTime更改为32位EncrpytPasswordSensitive并删除包配置-这是可行的,但这不是我公司的标准,也不是我以前开发和测试包的方式

EN

回答 1

Stack Overflow用户

发布于 2019-06-27 07:44:07

当您打开/运行包时,将触发一个OnInformation事件,该事件如下所示

程序包尝试从XML文件"c:\ssisdata\so_56776576.dtsconfig“进行配置。

当Visual Studio/SSDT打开/运行一个程序包时,它说它使用了配置,但由于某些原因,无法获取它们,然后您应该会看到如下消息

加载so_56776576.dtsx时出现

警告:导入配置文件失败:"c:\ssisdata\so_56776576.dtsconfig“

加载so_56776576.dtsx时出现

警告:找不到配置文件"c:\ssisdata\so_56776576.dtsconfig“。检查目录和文件名。

加载so_56776576.dtsx时出现

警告:未能加载包的至少一个配置项。检查"Configuration 1“的配置条目和之前的警告,查看失败的配置的描述。

如果有人手动编辑了配置文件并破坏了XML,您将看到如下警告

无法加载XML配置文件。XML配置文件的格式可能不正确或无效

关于configuration -需要注意的重要一点是,如果找不到配置,SSIS将继续显示设计时的值。这就是为什么检查包运行时发出的警告是至关重要的。如果您正在手动运行,请确保指定了/rep ew,以便报告错误和警告。

关于根本原因的猜测

包的保护级别为EncryptSensitiveWithUserKey,这意味着包创建者的AD凭据用于对可能包含敏感信息的内容进行哈希处理。我可以在我的连接字符串中使用AD身份验证,并指定连接应该是可信的,但整个区块仍将根据我的Active Directory帐户进行加密。当你出现并试图维护包时,它将无法解密敏感数据,因为你不是我。

解决这个问题的两种方法是使用共享密钥(EncryptSensitiveWithPassword/EncryptPackageWithPassword),它处理起来很麻烦,而且它违背了整个保密精神,因为每个人都知道这个秘密。您已经确定的另一种方法是DontSaveSensitive,这就是我要解决的所有问题。

要克服的问题是,使用DontSaveSensitive时,您每次保存时,SSIS都会从可能保留用户名和密码的位置清除任何有关用户名和密码的信息-比如连接管理器。2005/2008年避免这种情况的策略是在运行时使用配置或显式覆盖来提供用户名和密码。我的典型方法是使用基于表的配置,而不是基于XML的配置,因为我更擅长保护表中的敏感数据,而不是在文件系统上处理ACL。对于多个开发人员和基于文件的配置,我们遇到的另一个挑战是,要么每个人都必须设置相同的文件系统(而我们开发人员是独特的彩虹雪花,所以这是不太可能的),要么我们需要使用网络共享文件,这是很棒的,直到有人给它添加自己的值并破坏它,或者删除您的更改或任何其他挑战。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56776576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档