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