使用 SQL Server 链接服务器功能连接更高版本到较低版本的 SQL Server 时出错

本文可帮助你使用 SQL Server链接服务器功能(从 Windows Server 2022 或更高版本到旧版 Windows 上托管的SQL Server)找到连接问题的解决方案。

症状

如果使用链接服务器功能从 Windows Server 2022 或更高版本连接到在较低版本的 Windows 上运行的 SQL Server SQL Server,则可能会出现此问题。

你可能会收到以下错误消息之一:

[Microsoft OLE DB Driver for SQL Server]:客户端无法建立连接

[Microsoft OLE DB Driver for SQL Server]:TCP 提供程序:远程主机已强制中断现有连接。

在这里,当服务器尝试连接到SQL Server时,远程服务器会收到 TLS 消息。 生成不可恢复的警报并将其发送到远程端。 此错误可能会终止连接。 TLS 协议定义的致命错误代码为 40。 Windows Schannel 错误状态为 1205

原因

使用 Azure 虚拟机连接到 SQL Server 2012 时,可能存在对 TLS 1.2 的支持。

解决方案

若要解决此问题,请添加以下必需的注册表项,并将SQL Server更新为 2012 SP4,以便SQL Server 2022 可以连接到它。

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server] "DisabledByDefault"=dword:00000000 "Enabled"=dword:00000001

在基于 SQL Server 2012 的服务器上安装更新后,可能会收到以下错误消息:

SQL Server 实例 MSSQLSERVER 的语言与SQL Server更新所需的语言不匹配。 已安装SQL Server产品的语言为<其他语言>,预期SQL Server语言为英语 (美国) 。

若要解决此错误,请执行以下步骤。

注意

在运行此过程中的命令之前,请确保已安装英语 (美国) 语言包。

  1. 打开 PowerShell。

  2. 若要获取当前语言列表,请运行以下命令:

    Get-WinUserLanguageList

  3. 若要将语言设置为英语 (美国) ,请运行以下命令:

    Set-WinUserLanguageList -LanguageList en-US

  4. 重新启动服务器。

  5. 安装 SQL Server 2012 SP4 更新。

  6. 再次重启服务器。

若要使用 UDL 检查连接,请参阅通用数据链接 (UDL) 配置

另请参阅

远程主机强行关闭了现有连接 (OS 错误 10054)