代码之家  ›  专栏  ›  技术社区  ›  crb

为ODBC指定默认驱动程序

  •  8
  • crb  · 技术社区  · 17 年前

    我有一个遗留的VB6应用程序,它基于配置文件中的参数构建DSN。该参数是一个ODBC连接,该连接有一个名称(DSN-name),用于将服务器(DBSERVER)映射到驱动程序(“SQL server本机客户端”)。

    通常,它会构建一个DSN,如下所示:

    DSN=DSN-NAME;用户=foo;密码=bar

    如果我在文件中指定一个主机名,它会生成一个连接字符串

    DSN=DBSERVER;用户=foo;密码=bar

    报告的错误消息是:

    [Microsoft][ODBC驱动程序管理器]未找到数据源名称,也未指定默认驱动程序

    这向我建议,也许有一种方法可以指定默认驱动程序,这可能意味着我可以在配置文件中只指定服务器名称,而不需要创建ODBC连接。

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

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

    编辑: 重点是在不更改连接字符串的情况下尝试这样做。所有的研究都表明这实际上是不可能的,但他在对话中的措辞暗示这可能是可能的。

    4 回复  |  直到 16 年前
        1
  •  4
  •   Stephan    13 年前

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

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

    参见本文 "Data source name not found and no default driver specified" 在Corey Gilmore的博客上。

        2
  •  1
  •   anon anon    17 年前

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

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

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

        3
  •  1
  •   ErikE    17 年前

    您可以通过在连接字符串中添加“;SERVER=dbserver”来实现所需的功能。

    DSN中已经指定了一个服务器,但connectionstring中的server关键字将覆盖该服务器。

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

        4
  •  0
  •   CMB    17 年前

    使用无DSN连接字符串。。。它可以“即时”创建,以完全符合您的目的。。。。不要和odbcad32乱搞。控制/配置dsn所需的cpl或reg/ini文件。

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

    详情