Symfony 5.3 连接 Microsoft SQL Server (MSSQL) 问题求助
Symfony 5.3 连接 Microsoft SQL Server 配置方案
前置依赖校验
- 安装对应PHP版本的
pdo_sqlsrv和sqlsrv扩展:Windows环境直接下载对应dll文件放入扩展目录,在php.ini中添加extension=pdo_sqlsrv、extension=sqlsrv配置;Linux环境需先安装Microsoft ODBC Driver for SQL Server,再编译安装对应扩展。 - 确认项目已安装Doctrine核心依赖:执行
composer require doctrine/doctrine-bundle doctrine/orm完成依赖安装。 - 校验Doctrine DBAL版本:要求版本≥2.10,低版本对sqlsrv驱动兼容性不足,执行
composer show doctrine/dbal查看当前版本,版本过低可执行composer update doctrine/dbal升级。
配置文件修改
1. 根目录.env文件配置
修改数据库连接串配置项:DATABASE_URL="sqlsrv://<数据库用户名>:<数据库密码>@<MSSQL服务器地址>:<端口,默认1433>/<数据库名称>?serverVersion=<你的MSSQL版本号,例如15.0对应SQL Server 2019>"
若使用Windows本地集成身份验证,可省略用户名密码,格式为:
DATABASE_URL="sqlsrv://:@127.0.0.1:1433/数据库名?serverVersion=15.0"
2. Doctrine配置文件修改
打开config/packages/doctrine.yaml,确认dbal配置段匹配sqlsrv驱动:
doctrine: dbal: url: '%env(resolve:DATABASE_URL)%' driver: 'pdo_sqlsrv' charset: UTF-8
连接有效性验证
执行Symfony控制台命令测试连接:php bin/console doctrine:query:sql "SELECT @@VERSION"
正常返回MSSQL版本信息即说明连接成功。
常见错误排查
- 提示「driver not found」:检查php.ini是否已启用pdo_sqlsrv扩展,确认cli和web服务(fpm/apache)使用的是同一份php.ini配置文件。
- 提示「Login failed for user」:确认账号密码正确,MSSQL服务器已开启「SQL Server和Windows身份验证模式」,而非仅Windows身份验证。
- 提示「连接超时」:确认MSSQL服务器1433端口已放行,未被防火墙拦截,服务器地址、端口填写正确。
内容的提问来源于stack exchange,提问作者Miguel Glory
相关产品推荐
相关产品推荐

