移至64位后,SSIS包失败

时间:2013-03-28 13:17:23

标签: ms-access ssis jet ms-jet-ace

我们有一系列SQL Server Integration Services包,可将数据从几个MS Access数据库复制到SQL Server 2008数据库中。有一个父包调用各种子包,并且该父包由运行执行包的.bat文件的用户启动,如下所示:

dtexec /f "\\networkshare\package.dtsx" /CHECKPOINTING OFF /REPORTING EWCDI

这已经好几年了。我们的IT部门已经开始将我们的32位Windows XP工作站升级到64位Windows 7,并且由于他们已经升级了这些用户的工作站,因此该程序包已失败,从而出现错误

  

-1071607037,0x,SSIS错误代码DTS_E_OLEDB_NOPROVIDER_64BIT_ERROR。请求的OLE DB提供程序MICROSOFT.JET.OLEDB.4.0未注册 - 可能没有64位提供程序可用。错误代码:0x00000000。   OLE DB记录可用。来源:“Microsoft OLE DB服务组件”Hresult:0x80040154描述:“类未注册”。

我的工作站尚未从Windows XP升级,我仍然可以运行软件包,但我推迟升级的能力已经不多了,我需要尽快找出解决方案。我在努力解决这个问题时发现了很多与此相关的文章和帖子。我尝试过的事情包括:

  • 确保用户安装了Client Tools和Business Intelligence Development Studio并且路径有效后,将.bat文件的内容更改为专门引用“C:\ Program Files(x86)\ Microsoft SQL Server \ 100 \ DTS \ Binn \ dtexec.exe“希望使用32位JET提供程序
  • 研究了Run64BitRuntime设置,但这似乎只在调试时产生效果,对我没有帮助
  • 研究过将/ X86标志添加到命令行但是根据dtexec上的MSDN文章,这只有在SQL Server代理运行任务时才会生效
  • 我尝试过的最后一件事是安装Microsoft Access数据库引擎2010 Redistributable并从“Provider = Microsoft.Jet.OLEDB.4.0;”更改连接字符串。到“Provider = Microsoft.ACE.OLEDB.12.0;”。我似乎无法用这个开始。如果我尝试在BIDS中创建一个新连接并将提供程序设置为“Microsoft Office 12.0 Access数据库引擎OLE DB提供程序”并测试连接,我会收到错误“测试连接失败,因为初始化提供程序时出错。未指定错误”

我只是在为我能尝试的任何其他任何帮助而感到茫然,即使它正在尝试我已经尝试过的东西,也许我在最初尝试时已经配置了错误,而不是肯定的。

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:3)

在SQL Agent作业中或通过单独执行包有一个名为“执行选项”的选项卡,您可以选择“使用32位运行时”选项

答案 1 :(得分:2)

默认情况下,SQL Server将64位版本的DTEXEC放在路径中。 32位版本应该位于C:\ Program Files(x86)\ Microsoft SQL Server \ 100 \ DTS \ Binn之类的地方,需要直接调用。我在ACE驱动程序和Excel文件中遇到了同样的问题。

有关详细信息,请参阅this

答案 2 :(得分:2)

我能够通过更改项目属性页面中的调试设置来成功运行它。要更改的属性是Run64BitRuntime - >将此设置为false。