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

问题描述 投票:3回答:5

嗨我有一个在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文本驱动程序或有任何替代解决方案?谢谢

32bit-64bit
5个回答
9
投票

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

尝试重新编译以专门针对x86。


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位对应程序区分开来。


3
投票

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

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

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

谢谢Cameron。


0
投票

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


0
投票

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

  1. 使用Unix ODBC来托管来自Linux的文本文件,文档(似乎)声称支持Microsoft text driver的实现
  2. 当然,更好的选择是将CSV导入PostgreSQL。 我建议只使用\COPY并删除CSV的概念。 您可以使用PostgreSQL维护CSV作为服务器使用Foreign Data Wrapperfile_fdw)。
  3. 如果您不想运行RDBMS,那么现代的方法就是使用SQLite。如果您不需要服务器/客户端模型,这是一个好主意。

ODBC-> text接口特别疯狂,因为ODBC没有定义超出连接的配置(所以我假设有很多假设)。

© www.soinside.com 2019 - 2024. All rights reserved.