web-dev-qa-db-fra.com

La tentative de connexion de la base de données a échoué avec l'erreur: «La poignée de main de connexion a échoué. La vérification de la poignée de main a échoué. État 36. '

Tout en effectuant une pgrade Rolling d'un groupe de disponibilité de SQL Server 2016 CU1 à 2016 SP1, nous avons remarqué un problème. Immédiatement après jour, la réplication des répliques secondaires a cessé de fonctionner pour ce nœud et que les journaux SQL indiquaient qu'il y avait un problème avec la liste de connexion de la base de données:

Database Mirroring Login Tentative de l'utilisateur 'Domaine\ServiceAcount.' Échec avec l'erreur: 'La poignée de main de connexion a échoué. La vérification de la poignée de main a échoué. État 36. '. [Client: 10.1.2.3]

Qu'est-ce qui cause cette question et comment pouvons-nous le résoudre?

4
Greg Bray

Ceci est un problème avec la méthode de cryptage utilisé sur le point de terminaison de miroir de la base de données . Dans SQL Server 2014, le type de cryptage par défaut était RC4, mais dans SQL Server 2016, la nouvelle valeur par défaut est AES et on dirait que la section Mise à jour CU2 peut avoir supprimé la prise en charge de RC4.

Pour détecter et résoudre ce problème, vous pouvez exécuter ce qui suit sur vos nœuds:

-- Looking at encryption_algorithm - RC4 is deprecated in 2016 CU2+
Select * From sys.database_mirroring_endpoints

Alter Endpoint Hadr_endpoint
 STATE=STARTED
 AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
 FOR DATA_MIRRORING (ROLE = ALL, AUTHENTICATION = WINDOWS NEGOTIATE
 , ENCRYPTION = REQUIRED ALGORITHM AES RC4)
 GO

Après quelle réplication doit commencer à travailler à nouveau et que vous pouvez continuer avec la mise à niveau de roulement.

4
Greg Bray