SQL错误:未找到数据源名称且未指定默认驱动程序

时间:2012-08-01 19:19:21

标签: php sql-server-2005 odbc

我在(64位)Windows上安装了带有php 5.3.5的Xampp,我想在(32位)SQL Server 2005中使用第三方ODBC驱动程序连接到数据库,但它总是带来同样的错误“SQL错误:找不到数据源名称,并且没有指定默认驱动程序“。我创建了一个系统DSN,并尝试使用odbc_connect进行连接。我将非常感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

我们发现问题通常是sqlncli.dll由于某种原因没有正确注册。它要么是因为dll文件本身的问题,注册表的权限等等。

以下是我们如何解决此错误:

Open Regedit
Navigate to H_KEY_LOCAL_MACHINE\Software\ODBC\ODBCINST
NOTE: If it is a 64 bit computer and you are working with a 32-bit SQL install, the path will probably actually be H_KEY_LOCAL_MACHINE\Software\WOW6432Node\ODBC\ODBCINST

在ODBCINST项中,验证SQL Native Clent regkey是否存在。单击它并验证它的所有值是否填充在屏幕的右侧。它应该是这样的:

(Default)            REG_SZ   (value not set)
APILevel             REG_SZ   2
Connectfunctions     REG_SZ   YYY
CPTimeout            REG_SZ   60
Driver               REG_SZ   c:\windows\system32\slncli.dll 
DriverODBCVer        REG_SZ   09.00
FileUsage            REG_SZ   0
Setup                REG_SZ   c:\Windows\System32\sqlncli.dll
SQLLevel             REG_SZ   1
Usagecount           REG_DWORD 0x00000001 (1)

如果您看到的是(默认)条目,则slncli.dll未正确注册,这意味着SQL Native Client ODBC驱动程序未正确注册。

请按以下步骤操作:

确保您以管理员身份登录。为当前登录的用户授予对regkey的完全控制权限。请注意,您可能必须拥有密钥的所有权才能为其设置权限。有很多资源描述如何获取一个regkey的所有权并设置权限,所以我不会在这里详细说明。

一旦您拥有对该键的完全控制权限,值可能只会出现在屏幕的右侧。这意味着它只是一个权限问题。

如果值仍未显示,则下一步将验证sqlncli.dll文件夹或Windows\System32文件夹中是否存在Windows\SysWow64(对于64位系统) 。如果不存在,则必须从另一台PC获取副本,确保从中检索的PC与缺少该文件的操作系统具有相同的操作系统。

如果文件存在,请检查文件的版本。 SQL 2005使用版本9.00.4035.00。如果没有为该文件列出任何版本,则它已损坏,并且您将再次从另一台PC中提取副本。

如果文件存在且列出了版本,请使用regsvr32从命令行手动注册。

答案 1 :(得分:0)

也许你没有司机,因为它清楚地说:) 下载x32和x64。 - 这里

    https://www.microsoft.com/en-us/download/details.aspx?id=13255

欢迎。

答案 2 :(得分:0)

我只是花了半天时间处理这个问题并最终弄明白 - 至少我的情况。我知道这个帖子有点旧,但它仍然是相关的。

您需要确保osql.exe的版本与您正在使用的本机客户端版本匹配。我有2005年的osql.exe和2008 R2的本机客户端。一旦我使用了' 08 R2 osql.exe,一切都按预期工作。