为什么我的ODBC连接在Visual Studio中运行SSIS加载时失败,而在使用Execute Package Utility运行相同的包时则失败

问题描述 投票:13回答:1

我正在SSIS 2012中处理数据集市加载包。当尝试在Visual Studio中执行包时,我收到此错误:

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

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

当我使用Execute Package Utility在Visual Studio外部执行包时,包运行。

我不明白发生了什么。

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

sql-server ssis etl
1个回答
40
投票

在这里做一些假设,但我将假设这是一个32对64位的问题。要进行验证,请从命令提示符处尝试这两个命令(Windows Key,R,cmd.exe或Start,Run,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位版本),就需要确保项目使用适当的运行时。右键单击项目并选择Properties,然后导航到Configuration Properties下的Debugging选项卡。

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

修复SQL代理

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

谎言和欺骗

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

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