Vb6 为ODBC指定默认驱动程序

Vb6 为ODBC指定默认驱动程序,vb6,odbc,adodb,dsn,Vb6,Odbc,Adodb,Dsn,我有一个遗留的VB6应用程序,它基于配置文件中的参数构建DSN。该参数是一个ODBC连接,该连接有一个名称(DSN-name),用于将服务器(DBSERVER)映射到驱动程序(“SQL server本机客户端”) 通常,它构建的DSN如下所示: DSN=DSN-NAME;用户=foo;密码=bar 如果我在文件中指定一个主机名,它将生成一个连接字符串,其中 DSN=DBSERVER;用户=foo;密码=bar 报告的错误消息为: [Microsoft][ODBC驱动程序管理器]未找到数据源名称,

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

通常,它构建的DSN如下所示:

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

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

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

报告的错误消息为:

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

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

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

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


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

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

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

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

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

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


使用无DSN的连接字符串…它可以“动态”创建以完全满足您的目的…无需使用odbcad32.cpl或reg/ini文件来控制/配置所需的DSN


详细信息

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

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


请参阅Corey Gilmore博客上的这篇文章。

谢谢,但对我来说,这不是“默认”驱动程序,而是“用户指定”驱动程序。谢谢,但这并不能澄清我关于默认驱动程序的问题。连接字符串是由我无法更改的代码生成的。对不起,我误解了。为了澄清,我有几个后续问题。您是否正在使用ADO连接ODBC目标数据库?此目标数据库是否始终为SQL Server?是否始终通过本机客户端连接?您希望知道如何在OLEDB连接字符串而不是ODBC DSN中指定默认驱动程序?因此,在essense中,您希望使用ADO,指定ODBC的OLEDB提供程序,在OLEDB连接字符串中提供附加信息以指定SQLServer目标?在这种情况下,它始终是肯定的。但是我不能更改生成的连接字符串,否则我只能将SERVER=dbserver放在其中。Handy,但是我不能更改那么多连接字符串,只需更改它的生成方式即可。最后,我希望我们将重写该应用程序,以使用DSN较少的连接字符串:)该链接不再可用。@AstralisSomnium这里是链接博客文章的存档: