SQL Server のリンク サーバー機能を使用して、より低いバージョンの SQL Server に接続中にエラーが発生しました
この記事では、WINDOWS Server 2022 以降から古いバージョンの Windows でホストされている SQL Server に SQL Server リンク サーバー機能を使用して接続の問題を解決する方法について説明します。
現象
この問題は、WINDOWS Server リンク サーバー機能を使用して、Windows Server 2022 以降から下位バージョンの Windows で実行されている SQL Server に接続している場合に発生する可能性があります。
次のいずれかのエラー メッセージが表示される場合があります。
[Microsoft OLE DB Driver for SQL Server]: クライアントが接続を確立できません
[Microsoft OLE DB Driver for SQL Server]: TCP Provider: 既存の接続がリモート ホストによって強制的に中断されました。
ここで、リモート サーバーは、サーバーが SQL Server に接続しようとしたときに TLS メッセージを受信します。 回復不能なアラートが生成され、リモート エンドに送信されます。 このエラーにより、接続が終了する可能性があります。 TLS プロトコルで定義された致命的なエラー コードは 40です。 Windows Schannel エラーの状態は 1205 です。
原因
TLS 1.2 のサポートが存在することが、Azure 仮想マシンを使用して SQL Server 2012 に接続する際の問題の原因になる可能性があります。
解決方法
この問題を解決するには、次の必要なレジストリ キーを追加し、SQL Server 2022 が接続できるように SQL Server を 2012 SP4 に更新します。
[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 言語は英語 (米国) です。
このエラーを解決するには、次の手順に従います。
Note
この手順のコマンドを実行する前に、英語 (米国) 言語パックがインストールされていることを確認します。
PowerShell を開きます。
現在の言語リストを取得するには、次のコマンドを実行します。
Get-WinUserLanguageList
言語を英語 (米国) として設定するには、次のコマンドを実行します。
Set-WinUserLanguageList -LanguageList en-US
サーバーを再起動します。
SQL Server 2012 SP4 更新プログラムをインストールします。
サーバーをもう一度再起動します。
UDL を使用して接続を確認するには、 Universal Data Link (UDL) の構成を参照してください。