指定ODBC的默认驱动程序

时间:2009-05-11 20:15:11

标签: vb6 odbc adodb dsn

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

通常,它会构建一个这样的DSN:

  

DSN = DSN-NAME;用户= FOO;密码=酒吧

如果我在文件中指定了主机名,它会构建一个连接字符串,表示

  

DSN = DBSERVER;用户= FOO;密码=酒吧

报告的错误消息是:

  

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

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

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

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

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

4 个答案:

答案 0 :(得分:3)

我遇到了同样的问题并通过使用32位ODBC管理员来创建32位DSN而不是管理工具中的64位管理员来修复它,而管理工具只创建了无效的64位DSN。 / p>

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

请参阅Corey Gilmore博客上的这篇文章"Data source name not found and no default driver specified"

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

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

您的DSN中已指定服务器,但您在connectionstring中的SERVER关键字将覆盖该服务器。

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

答案 3 :(得分:0)

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

请参阅http://support.microsoft.com/kb/147875

了解详情