【问题标题】:32-bit Text drivers (Microsoft Access , Microsoft Excel and Text files ) from a 64 bit application on windows 7Windows 7 上 64 位应用程序的 32 位文本驱动程序(Microsoft Access、Microsoft Excel 和文本文件)
【发布时间】:2011-03-28 03:36:23
【问题描述】:

您好,我有一个使用文本 ODBC 驱动程序在 XP 上开发的应用程序。但是当我使用 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" />

ERROR [IM002] [Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序


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

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 native client/SQL server/SQL server native client”

在 C:\Windows\SysWOW64\odbcad32.exe 中

我可以看到所有的 x32 驱动程序,但是如何修改我的连接字符串以访问 32 位 Microsoft 文本驱动程序,或者是否有任何替代解决方案? 谢谢

【问题讨论】:

    标签: 32bit-64bit


    【解决方案1】:

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

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

    【讨论】:

    • "my target set as'any cpu'" -- 这正是这个答案建议“尝试重新编译以专门针对 x86 为目标”的原因。
    • @Kiddo:是的 - 尝试将其更改为 'x86'
    【解决方案2】:

    您需要 64 位 Microsoft Access Database Engine 2010 Redistributable

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

    那就试试吧

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

    为驱动程序名称。

    AFAIK,来自 Microsoft Access Database Engine 2010 64 位 Redistributable 的所有 64 位 ODBC 驱动程序都略微更改了它们的驱动程序名称,我想是为了将它们与 32 位对应物区分开来。

    【讨论】:

    • 它不允许我安装 64 位 Redistributabl 因为我的官员产品是 32 位的
    • 会的,你只需要卸载32位的office,安装64位的redist,然后重新安装32位的office。您是否想经历这种痛苦是您的决定:)
    • 我知道我正在回复相当古老的评论。但上述过程(卸载 32 位 office,安装 64 位 redist 然后重新安装 32 位 office)不起作用。如果我安装了 54 位 redist,它不允许我重新安装 32 位 office。现在有什么线索可以解决这个问题吗?
    【解决方案3】:

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

    在找到此论坛条目之前,我确实安装了 Microsoft Access Database Engine 2010 Redistributable(32 位),但我不知道这是否对这个问题有任何影响。

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

    谢谢卡梅隆。

    【讨论】:

    • 我做了同样的事情,但继续卸载 Microsoft Access Database Engine 2010,它工作得很好。
    【解决方案4】:

    我们是从 ASP.Net 执行此操作的,只需将一个站点移动到在应用程序池的高级设置中启用“32 位启用”的单独应用程序池中即可使其在 Windows 2012 上运行。

    【讨论】:

      【解决方案5】:

      很多人在这里似乎很绝望,我想提供一些解决方案。但是,首先我想强调一下这是一个90 年代过时的专有垃圾创意。

      1. 使用 Unix ODBC 托管来自 Linux 的文本文件,文档(似乎)声称支持 Microsoft text driver 的实现

      2. 更好的选择当然是将 CSV 导入 PostgreSQL。

        1. 我建议只使用 \COPY 执行此操作,并放弃 CSV 的概念。
        2. 您可以使用Foreign Data Wrapper (file_fdw) 将 PostgreSQL 用作服务器来维护 CSV。
      3. 如果您不想运行 RDBMS,现代方法是使用 SQLite。如果您不需要服务器/客户端模型,这是一个好主意。

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

      【讨论】:

        猜你喜欢
        • 2012-09-03
        • 2012-11-21
        • 2011-10-15
        • 2011-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-19
        • 2021-07-31
        相关资源
        最近更新 更多