You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

启用TLS 1.2/1.1时应用服务器无法连接SQL Server 2012数据库求助

解决SQL Server 2012启用TLS 1.1/1.2后应用连接失败的问题

我之前碰到过一模一样的问题——启用TLS 1.1或1.2后,应用服务器死活连不上SQL Server 2012,其他版本的SQL Server却完全正常。你贴的报错信息(尤其是SSL Security error)其实直接指向了核心问题:SQL Server 2012默认对高版本TLS的支持不完善,得做几个关键配置才能解决。

1. 先给SQL Server 2012打必要补丁

SQL Server 2012要支持TLS 1.1/1.2,必须至少安装Service Pack 4 (SP4),而且最好加上后续的累积更新(比如CU10及以上)。早期的SP版本根本没包含这些TLS协议的支持组件,这是最常见的问题根源。

2. 配置Windows注册表启用TLS协议

光打补丁还不够,得在SQL Server所在的服务器上修改注册表,确保TLS 1.1和1.2被正确启用:

打开注册表编辑器(运行regedit),定位到路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

分别配置TLS 1.1和TLS 1.2:

  • 右键Protocols,新建项TLS 1.1,在下面再创建ClientServer两个子项
    • 每个子项里新建DWORD值:Enabled设为0xffffffff(或者1也可),DisabledByDefault设为0
  • 用同样的方式新建TLS 1.2项,以及对应的ClientServer子项,设置相同的DWORD值

(可选但推荐)禁用过时SSL协议

为了安全,把SSL 2.0、SSL 3.0的Enabled设为0,DisabledByDefault设为1,避免这些不安全的协议干扰连接。

3. 升级ODBC驱动

你报错里提到的[ODBC SQL Server Driver]是比较老旧的驱动(比如SQL Server Native Client或更早期的ODBC驱动),这类驱动对TLS 1.1/1.2的支持很差。建议换成ODBC Driver 17 for SQL Server,这个驱动完全兼容高版本TLS,且能正常连接SQL Server 2012。

4. 重启服务/服务器

修改注册表和打完补丁后,一定要重启SQL Server服务,最好直接重启整个服务器,确保所有配置完全生效。

验证连接是否正常

可以用sqlcmd命令快速测试:

sqlcmd -S <你的SQL服务器地址> -U <用户名> -P <密码> -C

-C参数是强制加密连接,能直接验证TLS握手是否成功。

最后再对应你贴的报错信息说明:

Connection failed: SQLState: '01000' SQL Server Error: 1 [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (SECCreateCredentials())
Connection failed: SQLState: '08001' SQL Server Error: 18 [Microsoft][ODBC SQL Server Driver][DBNETLIB]SSL Security error

这个错误本质就是TLS握手失败导致的,要么是SQL Server端未启用对应TLS协议,要么是客户端驱动不兼容,按照上面的步骤来应该就能解决问题。

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

火山引擎 最新活动