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

Express+TypeScript连接SQL Server遇ConnectionError问题求助

解决mssql+tedious连接SQL Server Express时的SSL协议不支持错误

问题详情

基于Express+TypeScript搭建Web API,使用mssql包及默认tedious驱动连接本地SQL Server Express,配置代码如下:

{
  server: 'localhost/SQLEXPRESS01',
  options: {
    encrypt: true,
    trustServerCertificate: true
  }
}

调用数据库操作时触发ConnectionError,具体错误信息:

ConnectionError: 无法连接到 localhost/SQLEXPRESS01:1433 - FC0B0000:error:0A000102: SSL routines:ssl_choose_client_version:不支持的协议:openssl\ssl\statem\statem_lib.c:2379:

已执行以下排查操作但问题未解决:

  • 启用SQL Server的TCP/IP和命名管道协议
  • 防火墙添加sqlserver.exe及1433端口的入站允许规则
  • 启用SQL Browser Service并重启SQL Server服务

解决方案

1. 指定兼容的SSL/TLS协议版本

错误核心是SSL协议版本不兼容——新版Node.js/OpenSSL默认禁用了旧版TLS协议(如TLSv1.0),而SQL Server Express可能仅支持这些旧协议。在连接配置的options.tls中显式声明允许的协议范围:

{
  server: 'localhost\\SQLEXPRESS01',
  options: {
    encrypt: true,
    trustServerCertificate: true,
    tls: {
      minVersion: 'TLSv1',
      maxVersion: 'TLSv1.2'
    }
  }
}

可根据SQL Server实际支持的版本调整,优先推荐使用TLSv1.2(若服务器支持)。

2. 修正服务器名称格式

SQL Server实例名称需使用反斜杠分隔,原配置中的正斜杠会导致解析错误,修正为:

server: 'localhost\\SQLEXPRESS01' // 字符串中转义反斜杠
// 或使用模板字符串
server: `localhost\\SQLEXPRESS01`

3. 临时关闭加密(仅本地开发)

若为本地开发环境,可临时关闭加密跳过SSL验证(生产环境禁止此操作):

{
  server: 'localhost\\SQLEXPRESS01',
  options: {
    encrypt: false,
    trustServerCertificate: true
  }
}

4. 检查SQL Server SSL配置

打开SQL Server配置管理器:

  • 导航至「SQL Server网络配置」→「你的实例协议」→「TCP/IP」→「属性」→「证书」
  • 确认SSL证书配置正确,或取消「强制加密」选项(若无需强制加密)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.10 06:03:09