我有一个旧版 VB6 应用程序,它根据配置文件中的参数构建 DSN。该参数是 ODBC 连接,该连接有一个名称 (DSN-NAME),它将服务器 (DBSERVER) 映射到驱动程序(“SQL Server Native Client”)。
一般来说,它构建的DSN是这样的:
DSN=DSN-NAME;用户=foo;密码=bar
如果我在文件中指定主机名,它会构建一个连接字符串,其中显示
DSN=DBSERVER;用户=foo;密码=bar
报错信息为:
[Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序
这对我来说可能有一种指定默认驱动程序的方法,这可能意味着我可以只在配置文件中指定服务器名称,而不需要创建 ODBC 连接。
(我知道这些可以自动创建;这只是为了简单安装,并满足我的好奇心)。
如何指定默认驱动程序?如果我可以将默认驱动程序设置为 SQL Server Native Client,我可以说 DSN=DBSERVER 并连接吗?
编辑:重点是尝试在不更改连接字符串的情况下执行此操作。所有研究都表明这实际上是不可能的,但他对话的措辞表明这可能是。
我遇到了同样的问题,并通过使用 32 位 ODBC 管理器创建 32 位 DSN 来修复它,而不是使用管理工具中的 64 位管理器,后者仅创建不起作用的 64 位 DSN。
32 位 ODBC 管理器位于
C:\Windows\SysWOW64\odbcad32.exe
参见这篇文章“未找到数据源名称且未指定默认驱动程序”。
要指定默认驱动程序,请在连接字符串中使用 DRIVER=:
DRIVER=driver name here;DATABASE=mydb;USER=foo;PASSWORD=bar
驱动程序名称是显示在控制面板 ODBC 配置工具中的每个驱动程序的名称。请注意,您需要提供通常来自 DSN 的信息,在本例中为数据库名称。
您可以通过将“;SERVER=dbserver”附加到连接字符串来实现您想要的目的。
您的 DSN 中已经指定了一个服务器,但连接字符串中的 SERVER 关键字将覆盖它。
http://msdn.microsoft.com/en-us/library/ms715433(VS.85).aspx
使用无 DSN 连接字符串...可以“即时”创建它以完全满足您的目的...无需使用 odbcad32.cpl 或 reg/ini 文件来控制/配置所需的 dsn。
参见 http://support.microsoft.com/kb/147875
了解详情