5

我有一个在 SQL2008R2 上运行良好的 SSIS 包,它使用环境变量指向连接字符串的配置文件。使用 VS2010 Shell,我升级了 SQL Server 2012 数据库的软件包。该包仍处于包部署模型中。包的 ProtectionLevel 设置为DontSaveSensitiveRun64BitRuntime = False. 当我尝试在 VS 中执行包时,出现以下错误:

[OLE DB 目标 [2]] 错误:SSIS 错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。对连接管理器“DB_Connection”的 AcquireConnection 方法调用失败,错误代码为 0xC0202009。在此之前可能会发布错误消息,其中包含有关 AcquireConnection 方法调用失败原因的更多信息。**

[SSIS.Pipeline] 错误:OLE DB 目标在预执行阶段失败并返回错误代码 0xC020801C。**

完全登录后,我在这里看到了第一个失败:

诊断,[计算机名],OFFICE\用户名,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 失败'。外部请求已完成。**

真正让我震惊的部分是,在包的早期,相同的“DB_Connection”管理器在许多执行 SQL 任务中成功使用。因此,似乎正在从配置中正确读取连接字符串。

我试过删除\重新创建连接管理器。我已验证 DTC 在我的本地和服务器上均已正确配置。我有其他包使用相同的配置方法使用数据流任务连接到同一个 SQL2012 数据库,没有问题。

任何人都可以给我指出正确方向的任何帮助将不胜感激。如果我不需要,我宁愿此时不必迁移到项目部署模型。

4

1 回答 1

7

我能够让我的包在本地运行。虽然我检查了我的任务上的TransactionOption以确保它们被设置为Supported,但事实证明我的序列容器之一被设置为Required。不知道为什么这在 SQL2008R2 中有效,但在 SQL2012 中无效。我将容器更改为受支持,并且程序包现在运行。

于 2013-03-27T18:37:37.260 回答