22

我正在处理 SSIS 2012 中的数据集市加载包。尝试在 Visual Studio 中执行包时出现此错误:

“对连接管理器 Data Warehouse.ssusr 的 AcquireConnection 方法调用失败,错误代码为 0xC0014009”。

当我测试 Connection Manager Data Warehouse.ssusr 的连接性时,我看到它通过了。

当我使用执行包实用程序在 Visual Studio 之外执行包时,包会运行。

我不明白发生了什么事。

该程序包还拒绝使用 SQL Server 作业计划运行,如果这与任何事情有关。

4

1 回答 1

51

在这里做一些假设,但我会假设这是一个 32 位与 64 位的问题。要进行验证,请在命令提示符下尝试这两个命令(Windows 键、R、cmd.exe 或开始、运行、cmd.exe)

"C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\dtexec.exe" /file C:\myPackage.dtsx
"C:\Program Files\Microsoft SQL Server\110\DTS\Binn\dtexec.exe" /file C:\myPackage.dtsx

第一个将在 32 位模式下运行您的包,而第二个将在 64 位模式下运行它。这很重要,因为您的驱动程序和您创建的任何 DSN 将仅在 32/64 位世界中可见。

修复 SSDT

一旦您确定了您需要的版本,可能是 32 位版本,您需要确保您的项目正在使用适当的运行时。右键单击您的项目并选择属性,然后导航到配置属性下的调试选项卡。

调试选项卡,Run64BitRuntime

在反转 Run64BitRuntime 值后,我假设您的包将在 SSDT 内工作。

修复 SQL 代理

您将需要编辑现有的 SQL 代理作业以更改作业步骤的 bittedness。这将位于“配置”选项卡下,然后位于“高级”选项卡下。选中/取消选中 32 位运行时。

代理 32 位选项卡

谎言和欺骗

细心的人可能会看到dtexec提供了一个/X86选项。不要相信。获得正确位数的唯一方法是显式调用正确的 dtexec.exe 文档甚至说了这么多,但没有人阅读文档。

此选项仅由 SQL Server 代理使用。如果在命令提示符处运行 dtexec 实用程序,则忽略此选项。

于 2012-12-19T19:50:32.917 回答