【问题标题】:Specify a default driver for ODBC指定 ODBC 的默认驱动程序
【发布时间】:2010-10-25 09:27:12
【问题描述】:

我有一个旧版 VB6 应用程序,它根据配置文件中的参数构建 DSN。该参数是一个 ODBC 连接,该连接有一个名称 (DSN-NAME),它将服务器 (DBSERVER) 映射到驱动程序(“SQL Server Native Client”)。

一般来说,它会像这样构建一个 DSN:

DSN=DSN-NAME;User=foo;Password=bar

如果我在文件中指定一个主机名,它会构建一个连接字符串,上面写着

DSN=DBSERVER;User=foo;Password=bar

报错信息为:

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

这对我来说可能是一种指定默认驱动程序的方法,这可能意味着我可以在配置文件中仅指定服务器名称,而无需创建 ODBC 连接。

(我知道这些可以自动创建;这只是为了简单地安装,并满足我的好奇心)。

如何指定默认驱动程序?如果我可以将默认驱动程序设置为 SQL Server Native Client,我可以说 DSN=DBSERVER 并连接吗?

编辑: 重点是尝试在不更改连接字符串的情况下执行此操作。所有研究都表明这实际上是不可能的,但对话的措辞表明它可能是。

【问题讨论】:

    标签: vb6 odbc adodb dsn


    【解决方案1】:

    我遇到了同样的问题,并通过使用 32 位 ODBC 管理员创建 32 位 DSN 而不是管理工具中的 64 位管理员来修复它,后者仅创建不起作用的 64 位 DSN。

    32 位 ODBC 管理器位于 C:\Windows\SysWOW64\odbcad32.exe

    在 Corey Gilmore 的博客上查看这篇文章 "Data source name not found and no default driver specified"

    【讨论】:

    【解决方案2】:

    要指定默认驱动程序,请在连接字符串中使用 DRIVER=:

    DRIVER=driver name here;DATABASE=mydb;USER=foo;PASSWORD=bar
    

    驱动程序名称是显示在控制面板 ODBC 配置工具中的每个驱动程序的名称。请注意,您需要提供通常来自 DSN 的信息,在本例中为数据库名称。

    【讨论】:

    • 谢谢,但对我来说,这不是“默认”驱动程序,而是“用户指定”驱动程序。
    【解决方案3】:

    您可以通过将“;SERVER=dbserver”附加到您的连接字符串来实现您想要的。

    您的 DSN 中已经指定了一个服务器,但您的连接字符串中的 SERVER 关键字将覆盖它。

    http://msdn.microsoft.com/en-us/library/ms715433(VS.85).aspx

    【讨论】:

    • 很方便,但是我不能对连接字符串进行太多更改,只需更改它的生成方式即可。最终我希望我们将重写该应用程序以使用无 DSN 连接字符串:)
    【解决方案4】:

    使用无 DSN 连接字符串...可以“即时”创建以完全适合您的目的...无需使用 odbcad32.cpl 或 reg/ini 文件来控制/配置所需的 dsn。

    http://support.microsoft.com/kb/147875

    了解详情

    【讨论】:

    • 谢谢,但这并不能解决我关于默认驱动程序的问题。连接字符串是由我无法更改的代码生成的。
    • 对不起,我误会了。为了澄清,我有几个后续问题。您是否正在使用 ADO 连接以 ODBC 为目标的数据库?这个目标数据库总是 SQL Server 吗?始终通过 Native Client 连接?您想知道如何在 OLEDB 连接字符串而不是 ODBC DSN 中指定默认驱动程序?所以本质上,您希望使用 ADO,指定 ODBC 的 OLEDB 提供程序,在 OLEDB 连接字符串中提供附加信息以指定 SQLServer 目标?
    • 在这种情况下,它总是是的。但是我无法更改生成的连接字符串,否则我只会将 SERVER=dbserver 放入其中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 2011-06-02
    • 2017-04-06
    • 1970-01-01
    • 2018-07-10
    相关资源
    最近更新 更多