You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Laravel 7.30中启用MARS连接SQL Server解决TDS流协议错误问题

Laravel 7.30 开启SQL Server MARS配置方案

在config/database.php的sqlsrv连接配置中新增options参数,传入PDO_SQLSRV扩展的MARS启用属性即可,修改后的完整配置如下:

'sqlsrv' => [
      'driver' => 'sqlsrv',
      'url' => env('DATABASE_URL'),
      'host' => env('DB_HOST', 'localhost'),
      'port' => env('DB_PORT', '1433'),
      'database' => env('DB_DATABASE', 'forge'),
      'username' => env('DB_USERNAME', 'forge'),
      'password' => env('DB_PASSWORD', ''),
      'charset' => 'utf8',
      'prefix' => '',
      'prefix_indexes' => true,
      'appname' => env('DB_APPNAME', 'MyAppName-' . env('APP_ENV')),
      // 启用MARS配置
      'options' => [
          PDO::SQLSRV_ATTR_MARS_ENABLED => true,
      ],
],

配置注意事项

  • 若你的pdo_sqlsrv扩展版本低于5.8.0,未定义PDO::SQLSRV_ATTR_MARS_ENABLED常量,可直接替换为常量对应的整数值:
    'options' => [
        1092 => true,
    ],
    
  • 修改配置后需清空配置缓存生效:php artisan config:clear

"Protocol error in TDS stream"错误其他可能诱因

  • SQL Server服务器端主动关闭了MARS功能,可联系运维确认服务器配置
  • 单次查询返回结果集过大,内存不足导致TDS数据包解析失败,可拆分大查询为分页查询
  • 数据库长连接超时被服务器断开,复用无效连接发起查询触发报错,可新增PDO断线重连配置
  • pdo_sqlsrv扩展版本与SQL Server服务器版本兼容性不足,可升级扩展到最新稳定版

内容的提问来源于stack exchange,提问作者Jens Eeckhout

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:36:02