WEB开发网
开发学院服务器WEB服务器综合平台 PHP无法连接MSSQL数据库的解决办法 阅读

PHP无法连接MSSQL数据库的解决办法

 2007-12-20 12:41:22 来源:WEB开发网   
核心提示:客户反映他的一台虚拟主机服务器PHP无法连接mssql(WINDOWS平台上强大的数据库平台)数据库了,很是纳闷以前好好啊,PHP无法连接MSSQL数据库的解决办法,客户反映说,因为昨天出现PHP无法连接mssql(WINDOWS平台上强大的数据库平台)数据库,但收获还是很大的,现在把它贴出来,他重新安装了PHP结果还
  客户反映他的一台虚拟主机服务器PHP无法连接mssql(WINDOWS平台上强大的数据库平台)数据库了。很是纳闷以前好好啊。客户反映说,因为昨天出现PHP无法连接mssql(WINDOWS平台上强大的数据库平台)数据库,他重新安装了PHP结果还是报错,出错代码如下:
Warning: mssql(WINDOWS平台上强大的数据库平台)_connect(): Unable to connect to server:

  php.ini中确认已经打开 php_mssql(WINDOWS平台上强大的数据库平台).dll支持,就是连不上,我也郁闷啊。
  主机的变量设置我是一遍一遍的检查,那些设置是一点问题都没有的,翻遍网页,找到了下面的这点蛛丝马迹:

  php.net中有如下信息:

I am trying to connect to SQL Server 2000 from PHP 
I bumped to following warning: 
Warning: mssql(WINDOWS平台上强大的数据库平台)_connect(): Unable to connect to server: SERVER\Portal 
....... on line 5 

on line 5 there is: 
$db_connect = mssql(WINDOWS平台上强大的数据库平台)_connect(’SERVER\Portal’, ’sa’, ’my_passwd’); 

I did the following 
1.enabled php_mssql(WINDOWS平台上强大的数据库平台).dll extension in PHP.ini 
2.every dll is in proper place(System32 or PHP folder),including ntwdblib.dll 

I search lots of profile throught web ,but no one give me proper answer to resolve it. 

after a few hour ,I found the problem was caused by 
ntwdblib.dll ,which version is 7.00.839 ,when I replaced old ntwdblib.dll with the new 

ntwdblib.dll ,which version is 8.00.194 ,all problem are solved. 

We had some, read A LOT, of problems with mssql(WINDOWS平台上强大的数据库平台) under Windows 2003. 
We had 2 the same windows, phpphp-ini, everything machines but only one could connect. 

Unable to connect was the error message. 

Finnaly we checked the version of ntwdblib.dll and the one distributed with PHP was 7.00.... 

and the version of the one on the SQL Server install was 8.00.... so we copied this one in 

the php and apache(Unix平台最流行的WEB服务器平台) dir and it worked. 

问题就这样被找到了,惹祸的是它 ntwdblib.dll

ntwdblib.dll的主要作用是提供sql server连接服务。

  我用的php版本是4.3.11,在安装它的服器的 windows/system32/ 下我查到ntwdblib.dll文件的版本是2000.2.8.0 ,这个版本支持的是sql server 7.0, 因为安装PHP时会把dlls下面的所有文件覆盖到系统

  目录下,所以当我用它去连接 sql server 2000 的时候当然会是无法连接了。

  后来我在一台正常安装sql server 2000 的服务器上查到 ntwdblib.dll的版本是 2000.80.2039.0,我把这个文件拷过去,覆盖掉以前的版本,重启服务器后,一切正常。  补充:如果数据库名的开头是数字时也会提示无法打开,这时要做的很简单,把数据库的名字用中括号 [ ] 括起来就搞定了,如 123bbs 改写成 [123bbs]就没有问题了,另外如果你的数据库名字与sql server中的保留字冲突的话也会出现这种情况,用中括号的方法一样可以解决。 
  最终,PHP无法正确连接sql server 2000的问题终于解决了,虽然耗费大半天的时间,但收获还是很大的,现在把它贴出来,也让遇到同样问题的兄弟们少走一些弯路。

  附件:ntwdblib.dll 版本 2000.80.2039.0

  技术交流 永无止境

Tags:PHP 无法 连接

编辑录入:coldstar [复制链接] [打 印]
赞助商链接