我有一个遗留的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并连接吗?
编辑: 重点是尝试在不更改连接字符串的情况下执行此操作。所有的研究都表明这实际上是不可能的,但他在对话框中的措辞表明它可能是。
答案 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
了解详情