我有一个SSIS包在SQL2008R2上正常运行,使用环境变量指向连接字符串的配置文件。使用VS2010 Shell,我升级了SQL Server 2012数据库的包。该软件包仍处于软件包部署模型中。程序包的ProtectionLevel设置为DontSaveSensitive
。 Run64BitRuntime = False
。当我尝试在VS中执行包时,我收到以下错误:
[OLE DB Destination [2]]错误:SSIS错误代码DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。对连接管理器“DB_Connection”的AcquireConnection方法调用失败,错误代码为0xC0202009。在此之前可能会发布错误消息,其中包含有关AcquireConnection方法调用失败原因的更多信息。**
[SSIS.Pipeline]错误:OLE DB目标未通过预执行阶段并返回错误代码0xC020801C。**
完全登录后,我看到第一次失败:
Diagnostic,[ComputerName],OFFICE \ username,DB_Connection,{5AD75239-D546-4AAF-963E-E195FC2F0C1E},{9EC48106-DDBD-40E9-8FBB-942BCF025EEE},3/26/2013 10:35:21 AM ,3/26/2013 10:35:21 AM,0,(null),ExternalRequest_post:'ITransactionJoin :: JoinTransaction failed'。外部请求已完成。**
真正抛弃我的部分是在包中较早的部分,在许多执行SQL任务中成功使用了相同的“DB_Connection”管理器。因此,似乎正确地从配置中读取连接字符串。
我尝试删除\重新创建连接管理器。我已经验证在我的本地和服务器上都正确配置了DTC。我有其他软件包使用相同的配置方法连接到同一个SQL2012数据库,使用数据流任务没有问题。
任何人都可以给予任何帮助,指出我正确的方向将非常感激。如果我不需要,我宁愿不必在此时转移到项目部署模型。
答案 0 :(得分:6)
我能够让我的包在本地运行。虽然我已经检查了我的任务上的 TransactionOption 以确保它们设置为支持,但事实证明我的一个序列容器设置为必需。不知道为什么这在SQL2008R2中有效,但在SQL2012中没有。我将容器更改为支持,然后包运行。