ntwdblib.dll 的版本问题,是不少人在用 PHP 连 SQL Server 时踩过的坑。尤其你装了 SQL Server 2005 或 2008,结果一用mssql_connect()就报错,提示连不上服务器,挺让人抓狂的。其实根源就出在默认的ntwdblib.dll太老了,只认 SQL Server 2000。

PHP 安装目录自带的ntwdblib.dll用在 2005 或 2008 上,嗯,基本稳报错。所以换成新版的 DLL 是关键。找个适配的版本,比如2000.80.2039.0,放到C:\Windows\System32SysWOW64里,具体位置看你是 32 位还是 64 位系统。

改完别忘了重启一下 Apache 哦,不然 PHP 还读着旧文件。做完这些,mssql_connect()基本就能连上了。省得你绕一大圈去查驱动问题,其实就是个 DLL 版本没对上。

想了解更细的兼容问题,可以看看这篇php 连接 mssql 的 ntwdblib.dll 文件 64 位兼容问题。还有想搞清楚ntwdblib.dll到底干嘛用的,可以读读ntwdblib.dll 文件解读,写得还蛮清楚。

如果你正用PHP 5.xSQL Server 2008,又不打算换sqlsrv驱动,那这招就实用。自己试过,比较稳。如果你是 PHP 新版本了,建议用pdo_sqlsrv,官方支持更靠谱。