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

两台SQL Server 2019链接旧实例时加密状态不一致问题排查

链接服务器加密状态不一致的原因与解决方法

现象原因分析

  • 驱动版本差异:两台SQL Server 2019服务器上的链接服务器驱动(如ODBC/OLE DB)版本可能不同。旧版本驱动在目标SQL 2008R2实例未配置强制加密、无客户端证书的情况下,会忽略本地的FORCE ENCRYPTION设置;新版本驱动则会优先遵循本地客户端的加密要求,即使目标端未配置。
  • 客户端协议配置差异:虽然两台实例级FORCE ENCRYPTION设为TRUE,但SQL Server配置管理器中客户端协议(如TCP/IP)的加密设置可能不同——比如其中一台的TCP/IP协议属性里,"Force Encryption"实际为"否",实例级设置未同步到协议层。
  • 系统TLS策略差异:两台Windows虚拟机的本地组策略或注册表中,TLS版本优先级、加密套件配置可能存在细微差异,导致驱动协商加密连接时行为不一致。

统一加密状态的解决步骤

  1. 同步驱动版本
    将两台SQL Server 2019服务器上用于链接服务器的驱动(如ODBC Driver 17 for SQL Server)升级至同一最新版本,确保驱动对加密配置的解析逻辑一致。

  2. 检查客户端协议加密设置

  • 打开SQL Server配置管理器,展开对应版本的"SQL Server Native Client配置",点击"客户端协议"。
  • 右键TCP/IP选择"属性",确认"Force Encryption"设为"是",重启SQL Server服务生效。
  1. 显式配置链接服务器加密
    对已存在的链接服务器PB01,通过SQL命令强制开启加密:
EXEC sp_serveroption 'PB01', 'encrypt connection', 'true';

若重新创建链接服务器,可在连接字符串中显式指定加密:

EXEC sp_addlinkedserver 
    @server = N'PB01',
    @srvproduct=N'SQL Server',
    @provider=N'SQLNCLI11',
    @datasrc=N'目标SQL实例地址',
    @provstr=N'Encrypt=YES';
  1. 统一系统TLS配置
    检查两台虚拟机的本地组策略(计算机配置>管理模板>网络>SSL配置设置),确保TLS 1.2(SQL 2008R2支持的最高TLS版本)及加密套件的配置完全一致,两端均启用该版本TLS。

关键影响配置项

  • 客户端协议的Force Encryption:SQL Server作为客户端发起链接时的核心控制项,直接决定是否强制加密 outgoing 连接,优先级高于实例级FORCE ENCRYPTION。
  • 链接服务器的encrypt connection选项:显式指定单条链接的加密状态,优先级最高。
  • 驱动版本:不同版本驱动对加密参数的协商逻辑不同,旧驱动可能不支持客户端侧强制加密配置。
  • 系统TLS策略:TLS版本及加密套件的兼容性,直接影响加密连接的协商成功率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 20:54:58