我们有一系列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升级,我仍然可以运行软件包,但我推迟升级的能力已经不多了,我需要尽快找出解决方案。我在努力解决这个问题时发现了很多与此相关的文章和帖子。我尝试过的事情包括:
我只是在为我能尝试的任何其他任何帮助而感到茫然,即使它正在尝试我已经尝试过的东西,也许我在最初尝试时已经配置了错误,而不是肯定的。
非常感谢任何帮助!
答案 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。