3

我们有一系列 SQL Server 集成服务包,可将数据从几个 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 升级,我仍然能够运行这些程序包,但我推迟升级的能力已经耗尽,我需要尽快找出解决方案。在我努力解决这个问题的过程中,我发现了许多与此相关的文章和帖子。我尝试过的事情包括:

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

我几乎不知道我还能尝试什么并寻求任何帮助,即使它正在尝试我已经尝试过的东西,也许我在最初尝试它们时配置了错误,不确定。

任何帮助将不胜感激!

4

3 回答 3

3

In SQL Agent job or by just executing the package by itself there is a tab called "Execution options", you can select "Use 32 bit runtime" option

于 2013-11-05T14:09:59.950 回答
2

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

有关更多信息,请参阅

于 2013-03-29T05:47:13.050 回答
2

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

于 2014-11-12T19:48:00.340 回答