使用 SQL Server 链接服务器功能将更高版本连接到较低版本的 SQL Server 时出错
本文可帮助你查找使用从 Windows Server 2022 或更高版本到旧版 Windows 上托管的 SQL Server 的连接问题的解决方案。
现象
如果使用 SQL Server 链接服务器功能从 Windows Server 2022 或更高版本连接到在较低版本的 Windows 上运行的 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。
原因
支持 TLS 1.2 可能是使用 Azure 虚拟机连接到 SQL Server 2012 时出现问题的原因。
解决方法
若要解决此问题,请添加以下所需的注册表项,并将 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 语言为英语(美国)。
若要解决此错误,请执行以下步骤。
注意
在运行此过程中的命令之前,请确保已安装英语(美国)语言包。
打开 PowerShell。
若要获取当前语言列表,请运行以下命令:
Get-WinUserLanguageList
若要将语言设置为英语(美国),请运行以下命令:
Set-WinUserLanguageList -LanguageList en-US
重新启动服务器。
再次重启服务器。
若要使用 UDL 检查连接,请参阅 通用数据链接(UDL)配置。