SQL Server リンク サーバー機能を使用して、より低いバージョンのSQL Serverに高いバージョンに接続中にエラーが発生しました

この記事では、Windows Server 2022 以降から古いバージョンの Windows でホストされているSQL Serverまで、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言語は英語 (米国) です。

このエラーを解決するには、次の手順に従います。

注:

この手順のコマンドを実行する前に、英語 (米国) 言語パックがインストールされていることを確認してください。

  1. PowerShell を開きます。

  2. 現在の言語の一覧を取得するには、次のコマンドを実行します。

    Get-WinUserLanguageList

  3. 言語を英語 (米国) として設定するには、次のコマンドを実行します。

    Set-WinUserLanguageList -LanguageList en-US

  4. サーバーを再起動します。

  5. SQL Server 2012 SP4 更新プログラムをインストールします。

  6. サーバーをもう一度再起動します。

UDL を使用して接続をチェックするには、ユニバーサル データ リンク (UDL) の構成に関するページを参照してください。

関連項目

既存の接続がリモート ホストによって強制的に閉じられた (OS エラー 10054)