Udostępnij za pośrednictwem


Błąd podczas nawiązywania połączenia wyższego z niższą wersją programu SQL Server przy użyciu funkcji programu SQL Server Linked Server

Ten artykuł ułatwia znalezienie rozwiązania problemu z łącznością przy użyciu funkcji programu SQL Server Linked Server z systemu Windows Server 2022 lub nowszego do programu SQL Server hostowanego w starszej wersji systemu Windows.

Symptomy

Ten problem może wystąpić, jeśli nawiązujesz połączenie z systemu Windows Server 2022 lub nowszego z programem SQL Server uruchomionym w niższej wersji systemu Windows przy użyciu funkcji programu SQL Server Linked Server.

Może zostać wyświetlony jeden z następujących komunikatów o błędach:

[Sterownik Microsoft OLE DB dla programu SQL Server]: Klient nie może nawiązać połączenia

[Sterownik MICROSOFT OLE DB dla programu SQL Server]: Dostawca TCP: Istniejące połączenie zostało wymuszone przez hosta zdalnego.

W tym miejscu serwer zdalny odbiera komunikaty TLS, gdy serwer próbuje nawiązać połączenie z programem SQL Server. Generowany jest nieodzyskiwalny alert i wysyłany do zdalnego końca. Ten błąd może zakończyć połączenie. Zdefiniowany kod błędu krytycznego protokołu TLS to 40. Stan błędu Schannel systemu Windows to 1205.

Przyczyna

Obecność obsługi protokołu TLS 1.2 może być możliwą przyczyną problemu podczas nawiązywania połączenia z programem SQL Server 2012 z maszynami wirtualnymi platformy Azure.

Rozwiązanie

Aby rozwiązać ten problem, dodaj następujące wymagane klucze rejestru i zaktualizuj program SQL Server do wersji 2012 SP4, aby program SQL Server 2022 mógł się z nim połączyć.

[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

Po zainstalowaniu aktualizacji na serwerze opartym na programie SQL Server 2012 może zostać wyświetlony następujący komunikat o błędzie:

Język wystąpienia programu SQL Server MSSQLSERVER nie jest zgodny z językiem oczekiwanym przez aktualizację programu SQL Server. Język zainstalowanego produktu SQL Server to inny język>, a oczekiwany język programu SQL Server to <angielski (Stany Zjednoczone).

Aby rozwiązać ten błąd, wykonaj następujące kroki.

Uwaga 16.

Przed uruchomieniem poleceń w tej procedurze upewnij się, że masz zainstalowany pakiet językowy angielski (Stany Zjednoczone).

  1. Otwórz program PowerShell.

  2. Aby uzyskać bieżącą listę języków, uruchom następujące polecenie:

    Get-WinUserLanguageList

  3. Aby ustawić język jako angielski (Stany Zjednoczone), uruchom następujące polecenie:

    Set-WinUserLanguageList -LanguageList en-US

  4. Uruchom ponownie serwer.

  5. Zainstaluj aktualizację programu SQL Server 2012 SP4 .

  6. Ponownie uruchom serwer.

Aby sprawdzić łączność przy użyciu języka UDL, zobacz Konfiguracja usługi Universal Data Link (UDL).

Zobacz też

Istniejące połączenie zostało wymuszone przez hosta zdalnego (błąd systemu operacyjnego 10054)