【问题标题】:SSIS Package Fails After Move to 64-bitSSIS 包在移动到 64 位后失败
【发布时间】:2013-03-18 22:53:23
【问题描述】:

我们有一系列 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 提供程序”并测试连接,则会收到错误消息“由于初始化提供程序时出错,测试连接失败。未指定的错误” .

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

任何帮助将不胜感激!

【问题讨论】:

  • 子包是怎么调用的?父包可能在 32 位空间中运行,但根据调用子程序的方式,它们可能在 64 位空间中运行。
  • 您可以从microsoft.com/en-ie/download/details.aspx?id=13255 获得 64 位 ACE 驱动程序,它们是向后兼容的。
  • @billinkc 子包是从父包调用执行包任务。我不确定我在哪里看到的,但如果我没记错的话,我昨天看到一篇文章似乎表明 32/64 位之类的东西会从父包中流出
  • @Remou 该页面实际上是我在尝试将连接字符串中的提供程序更改为 Microsoft.ACE.OLEDB.12.0 之前下载驱动程序的位置。但是,安装后我似乎无法让它工作。
  • 你是对的。我正在考虑在同一进程空间标志中运行。那么,当您在 x86 中使用 dtexec 运行它时,您会得到 same 错误吗?您是否也有使用 DSN 的机会?

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


【解决方案1】:

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

【讨论】:

  • 这对我有用。该选项位于“编辑步骤”选项选项卡上。
【解决方案2】:

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

请参阅this 了解更多信息。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2012-04-20
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多