2013-03-28 81 views
2

我们有一系列SQL Server Integration Services包,可将数据从少数MS Access数据库复制到SQL Server 2008数据库中。有调用不同的子包一个父包,而父包是由运行执行包像这样一个.bat文件的用户启动:移至64位后SSIS包失败

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标志添加到命令行,但根据MSDN上的dtexec文章,如果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提供程序”并测试连接,则会出现错误“测试连接失败,因为初始化提供程序时出错”未指定的错误“ 。

我只是在为别人有什么我可以尝试寻找任何帮助都亏损,即使它想我已经尝试过的事情,也许我一直在试图它们配置一些错误原来,不确定。

任何帮助将非常感激!

+0

如何调用子包?父包可能在32位空间中运行,但根据调用子的方式,它们可能在64位空间中运行。 – billinkc

+0

您可以从http://www.microsoft.com/en-ie/download/details.aspx?id=13255获取64位ACE驱动程序它们向后兼容。 – Fionnuala

+0

@billinkc使用执行包任务从父包中调用子包。我不确定我在哪里看到它,但如果我记得正确,我昨天看到一篇文章,似乎表明像32/64位之类的东西会从父包中流出 – Supermercado

回答

1

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

请参阅this了解更多信息。

2

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

+0

这对我有效。该选项位于“编辑步骤”选项选项卡上。 – Francisco

1

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