来自Windows 7上的64位应用程序的32位文本驱动程序(Microsoft Access,Microsoft Excel和文本文件)

时间:2010-08-11 01:33:41

标签: 32bit-64bit

您好我在XP上使用Text ODBC驱动程序开发了一个应用程序。但是,当我使用Office 2007在Win 7上部署时,我遇到了连接问题。

<add key="SQLConnection.TextConnectionString" value="Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=c:\Data\;Extensions=asc,csv,tab,txt;Persist Security Info=False" />

错误[IM002] [Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序


我搜索了所有解决方案,例如安装以下

http://blogs.msdn.com/b/sqlblog/archive/2009/12/29/how-to-connect-to-file-based-data-sources-microsoft-access-microsoft-excel-and-text-files-from-a-64-bit-application.aspx

Microsoft Access数据库引擎2010可再发行(32位)

2007 Office System驱动程序:数据连接组件

在所有这些之后,在我的数据源(ODBC)中,它仍然只显示“SQL本机客户端/ SQL服务器/ SQL服务器本机客户端”

在C:\ Windows \ SysWOW64 \ odbcad32.exe

我可以看到所有x32驱动程序,但是如何修改我的连接字符串以访问32位Microsoft Text驱动程序,还是有其他替代解决方案? 感谢

5 个答案:

答案 0 :(得分:9)

我很确定它会自动工作(即使在64位机器上),只要执行过程是32位。

尝试重新编译以专门定位x86。

答案 1 :(得分:6)

您需要64位Microsoft Access数据库引擎2010可再发行组件

http://www.microsoft.com/downloads/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en

然后尝试

Microsoft Access Text Driver (*.txt, *.csv)

表示驱动程序名称。

AFAIK,来自Microsoft Access数据库引擎2010 64位可再发行组件的所有64位ODBC驱动程序略微更改了它们的驱动程序名称,我想将它们与32位对应程序区别开来。

答案 2 :(得分:3)

我有这个确切的问题,重新编译到目标x86专门工作!请注意,为了做到这一点,我必须在高级编译器设置对话框中指定目标CPU - 项目菜单&gt;性状&gt;编译标签&gt;高级编译选项按钮。

在找到此论坛条目之前,我确实安装了Microsoft Access数据库引擎2010可再发行组件(32位),但我不知道这是否对此问题有任何影响。

如上所述,当执行进程为32位(在这种情况下针对x86进行编译使应用程序特定于32位)时,应用程序将使用来自C:\ Windows \ SysWOW64 \ odbcad32.exe的驱动程序。

谢谢Cameron。

答案 3 :(得分:0)

我们是通过ASP.Net进行此操作,只需将一个站点移动到在应用程序池的高级设置中打开“32位已启用”的单独应用程序池中,就可以在Windows 2012上运行。

答案 4 :(得分:0)

很多人在这里看起来很绝望,我想提供一些解决方案。但是,首先,我想强调一下这是一个90年代的专有垃圾概念。

  1. 使用Unix ODBC来承载Linux(文档似乎(声称)声称支持Microsoft text driver

  2. 的实现)的文本文件。
  3. 一个更好的选择当然是将CSV导入PostgreSQL。

    1. 我建议仅使用\COPY并删除CSV的概念。
    2. 您可以使用Foreign Data Wrapperfile_fdw)将PostgreSQL用作服务器来维护CSV。
  4. 如果您不想运行RDBMS,则现代方法是使用SQLite。如果您不需要服务器/客户端模型,这是个好主意。

ODBC->文本接口特别疯狂,因为ODBC并未定义连接以外的配置(因此我假设那里有很多假设)。