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

Sco*_*ood 14 sql-server ssis etl

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

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

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

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

我不明白发生了什么.

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

bil*_*nkc 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
Run Code Online (Sandbox Code Playgroud)

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

修复SSDT

一旦确定了所需的版本(可能是32位版本),就需要确保项目使用适当的运行时.右键单击项目并选择Properties,然后导航到Configuration Properties下的Debugging选项卡.

调试选项卡,Run64BitRuntime

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

修复SQL代理

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

代理32位标签

谎言和欺骗

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

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

  • 如果两个命令都可以正常工作,但是在同一服务器上部署后任务仍然失败怎么办? (2认同)