| 网站首页 | 设计制作 | 设计资讯 | 网络学院 | 网站技术 | 推广运营 | 软件世界 | 硬件周刊 | 数码时尚 | 黑客攻防 | QQ家园 | 手机短信 | 设计软件 | 网络软件 | 图库 | 
最新公告:

  没有公告

您现在的位置: 奇迹网站制作设计中心 >> 网站技术 >> 服务器篇 >> 文章正文
专题栏目
更多内容
最新推荐 更多内容
相关文章
基于DB2的数据库应用系统
运用ASP调用数据库中视图
用Access将XLS与MDB文件
教你自动恢复MySQL数据库
配置 MySQL 双机热备份
运行SQL Server的计算机
在SQL Server实例之间传
怎样在不同版本SQL Serv
Oracle中用Rowid查找和删
教你如何识别SQL Server
更多内容
关于PHP无法连接MSSQL数据库的问题         ★★★
关于PHP无法连接MSSQL数据库的问题
作者:彩云编辑 文章来源:计算机世界网 点击数: 更新时间:2007-6-19 20:28:42
今天配置了新服务器,配置是IIS+php,结果运行时发现php连接远程mssql数据库出错,出错代码如下:
Warning: mssql_connect(): Unable to connect to server:

想想以前都是没问题的,怎么回事呢?后来去网上搜索,发现一篇文章,才发现原来服务器是需要安装mssql才能用php连接mssql的,本来新服务器上我是不需要用到mssql的,但是现在没办法了,只能把它装上了,安装了mssql之后就没问题了。

我在想,如果是在linux上面的apache+php会怎样呢,不可能需要安装mssql吧,呵呵,晕了。

下面是找到的一篇文章。

php配置:
在php.ini文件里设置如下,找到  
;extension=php_mssql.dll  把前面的分号去掉  
找到extension_dir  =  d:\extension\  
你的php.ini里面可能不是d:\extension\  
改成在php安装目录下面的extensions目录下面的php_mssql.dll,所在的路径,如果你没有把它移动到其他地方(假设你的php安装路径是d:\php)  
就改成extension_dir=d:\php\extensions\  
然后重新启动web服务器


这一点很容易做到,但是做完这样的设置后还是连不上,错误的信息如下:

MS SQL Server 数据库连接错误!请检查数据库主机变量设置是否正确!!!

而主机的变量设置我是一遍一遍的检查,那些设置是一点问题都没有的,翻遍网页,找到了下面的这点蛛丝马迹:


php.com资料:

I am trying to connect to SQL Server 2000 from PHP
I bumped to following warning:
Warning: mssql_connect(): Unable to connect to server: SERVER\Portal
....... on line 5

on line 5 there is:
$db_connect = mssql_connect('SERVER\Portal', 'sa', 'my_passwd');

I did the following
1.enabled php_mssql.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 under Windows 2003.
We had 2 the same windows, php, php-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 dir and it worked.

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

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

我用的php版本是4.3.9,在安装它的服器的 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的问题终于解决了,虽然耗费大半天的时间,但收获还是很大的,现在把它贴出来,也让遇到同样问题的兄弟们少走一些弯路。

本文关健字:北京网站设计 广州网站设计 广东网站设计 汕头网站设计 潮阳网站设计

文章录入:彩云    责任编辑:彩云 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 奇迹网站制作设计中心 | 神州网数据中心 | 广东神州网 | 神州网 神州站长网 |
    奇迹设计制作中心
    神州团队 | 关于我们 | 代理加盟 | 诚聘英才 | 联系方式 | 付款办法 | 投诉建议 | 广告服务 | 网站登录 |  
    热线电话:[0754]83609267 83127267 83128267 15815050509 Copyright© 1999--2109 网管总编风起携影归 星纷雪花 彩云

    神州网络业务咨询,程序主机域名订购,QQ:51950280 228900141 732637633 351261350 857260277 593876858 929790798

    空间提供:北京数据中心 技术支持:广东神州数码 1G全能空间年320元赠送域名网站程序网页设计动画制作 粤ICP备06110658号