PHPStorm连接SQL Server失败的三大核心原因是驱动不匹配、TCP/IP未启用、实例名/端口格式错误;必须启用TCP/IP协议并设端口1433,Host填完整实例名如DESKTOP-ABC\SQLEXPRESS,且确保php_sqlsrv扩展版本与PHP完全一致。

PHPStorm 连 SQL Server 不是点几下就能通的,核心卡点在驱动匹配、TCP/IP 启用、实例名/端口写法这三处。其他配置错一点可能报错,这三处错一个就直接连不上。
SQL Server 必须启用 TCP/IP 协议并开放 1433 端口
默认安装的 SQL Server(尤其是 Express 版)只开命名管道(Named Pipes),localhost 或 127.0.0.1 会直接报“命名管道提供程序: 无法打开与 SQL Server 的连接”。必须手动启用 TCP/IP:
- 运行
SQLServerManager15.msc(SQL Server 2019)或对应版本管理器(如 2017 是SQLServerManager14.msc) - 展开「SQL Server 网络配置」→「你的实例名的协议」→ 右键启用
TCP/IP - 双击 TCP/IP →「IP 地址」页签 → 拉到底部找到
IPAll→ 清空TCP Dynamic Ports,填入TCP Port为1433 - 重启 SQL Server 服务(不是 SQL Server Agent)
- 检查 Windows 防火墙是否放行了端口
1433(入站规则)
PHPStorm 数据源配置里不能填 localhost
即使你启用了 TCP/IP,填 localhost 或 127.0.0.1 仍大概率失败——SQL Server 默认不监听回环地址的 TCP 流量。必须用真实主机名或实例名:
- 查实例名:打开 SQL Server Management Studio,连接后看对象资源管理器顶部显示的服务器名,常见格式如
DESKTOP-ABC\SQLEXPRESS - PHPStorm 新建数据源时,
Host栏填这个完整实例名,不要加端口;Port栏留空或填1433(仅当实例名不带端口且你确认监听了 1433) - 如果要用 IP + 端口方式(比如远程连接),格式必须是
192.168.1.100,1433(注意是英文逗号,不是冒号) - 勾选
Use Windows authentication仅在 Windows 本机且 SQL Server 开了 Windows 身份验证时才有效;Linux/macOS 下必须用 SQL 账号(sa或其他用户)
PHP 扩展没装对,PHPStorm 测试连接必失败
PHPStorm 自己不连数据库,它调用的是你本地 PHP CLI 环境里的 sqlsrv 或 pdo_sqlsrv 扩展。扩展不加载,测试连接就直接抛 Driver not found:
立即学习“PHP免费学习笔记(深入)”;
- 先确认 PHP 版本和线程模型:
php -v看版本,php -i | findstr "Thread Safety"(Windows)或php -i | grep "Thread Safety"(macOS/Linux)看是enabled(TS)还是disabled(NTS) - 下载微软官方驱动 ZIP 包(如
php_sqlsrv_82_nts_x64.dll),文件名中的82、nts、x64必须和你的 PHP 完全一致 - 把 DLL 放进
php.ini中extension_dir指向的目录(用php --ini查路径),并在php.ini末尾加一行:extension=php_sqlsrv_82_nts_x64.dll(注意文件名一字不差) - 重启 PHP 服务(Apache/Nginx)或 CLI 环境,再运行
php -m | findstr sqlsrv确认扩展已加载
连接测试失败时优先看错误信息里的关键词
PHPStorm 测试连接弹出的错误框里,关键线索藏在具体文字中:
- 出现
Named Pipes Provider→ TCP/IP 没启用,回去查 SQL Server 配置管理器 - 出现
tcp provider: A connection attempt failed→ 网络不通,检查 IP/端口、防火墙、SQL Server Browser 是否启动(尤其用实例名时) - 出现
Driver not found或Class 'Sqlsrv' not found→ PHP 扩展没加载成功,别急着改 PHPStorm 设置,先跑php -m - 出现
Login failed for user→ 用户名密码错,或该用户没被授予登录权限(SSMS 里检查「安全性 → 登录名」)
真正卡住人的,往往不是配置步骤多,而是某一步的细节偏差(比如 DLL 名写错一位、TCP/IP 启用后没重启服务、实例名漏了反斜杠),这些地方没法靠重试解决,得对着错误信息反向定位。



















