0

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

4

4 回答 4

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)

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

进行如下操作:

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

一旦您拥有对密钥的完全控制权限,值可能会简单地显示在屏幕的右侧。这意味着它只是一个权限问题。

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

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

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

于 2013-09-27T17:34:25.937 回答
1

Windows 64 位上有 2 个 ODBC 驱动程序管理器。我怀疑你用错了。您需要确定您的 xampp 是 32 位还是 64 位,然后您需要在正确的 ODBC 管理器中定义 DSN。请参阅64-bit ODBC,它详细解释了这一切。

于 2012-08-02T08:05:02.727 回答
0

也许您没有明确说明的驱动程序 :) 下载 x32 和 x64。- 这里

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

欢迎。

于 2015-06-08T19:10:46.303 回答
0

我只花了半天时间解决这个问题,终于弄明白了——至少就我的情况而言。我知道这个线程有点旧,但它仍然是相关的。

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

于 2016-03-02T19:22:28.487 回答