Comment résoudre les problèmes Microsoft SQL sur mon instance Windows EC2 ?

Dernière mise à jour : 25/06/2021

Je reçois des erreurs sur mon instance Amazon Elastic Compute Cloud (Amazon EC2) exécutant Microsoft SQL Server. Ou bien, le serveur SQL est lent et provoque la journalisation d'erreurs de dépassement de délai par l'application. Comment résoudre les problèmes SQL Server sur mon instance ?

Brève description

Les erreurs suivantes peuvent survenir fréquemment sur votre SQL Server.

  • L'instance SQL Server a basculé d'un réplica principal vers un réplica secondaire.
  • L'Observateur d'événements enregistre l'événement 1196 « La ressource de nom de réseau du cluster « Nom du cluster » n'a pas pu enregistrer un ou plusieurs noms DNS associés pour la raison suivante » toutes les 15 minutes.
  • Vous ne pouvez pas créer d'écouteur SQL.
  • Le serveur SQL est lent et provoque la journalisation d'erreurs de dépassement de délai par l'application.
  • L'ajout d'un nœud échoue avec une erreur d'informations d'identification non valides après avoir détecté les paramètres d'un serveur distinct dans la configuration SQL.

Solution

L'instance SQL Server a bascué d'un réplica principal vers un réplica secondaire

Le basculement se produit fréquemment avec le groupe de clusters sous-jacent. Pour déterminer si le problème se situe au niveau du cluster, affichez les journaux système dans l'Observateur d'événements en procédant comme suit :

  1. Ouvrez l'application Exécuter, puis saisissez eventvwr et sélectionnez OK.
  2. Sélectionnez Journaux Windows, Système. Si les événements 1069, 1146, 1230 ou 1135 figurent dans les journaux, commencez par analyser le cluster en générant des journaux du cluster.
    Remarque : si vous l'événement 1135 est présent, cela implique que le basculement du nœud de cluster s'est produit. Pour plus d'informations sur la résolution de ce problème, consultez Résolution du problème de cluster avec l'ID d'événement 1135.

Pour générer et récupérer les journaux de cluster :

  1. Générez le dernier ensemble de journaux du cluster en exécutant la commande get-clusterlogs dans Windows PowerShell.
  2. Récupérez les journaux du cluster à partir de l'emplacement par défaut C:\windows\cluster\reports.

Si les journaux du cluster indiquent que le cluster a échoué en raison de ressources SQL, consultez les journaux de l'application Observateur d'événements pour rechercher les erreurs SQL. Pour plus d'informations, reportez-vous à Mécanismes et directives des délais de bail, de cluster et de vérification de l'état pour les groupes de disponibilité Always On.

L'Observateur d'événements enregistre l'événement 1196 « La ressource de nom de réseau du cluster « Nom du cluster » n'a pas pu enregistrer un ou plusieurs noms DNS associés pour la raison suivante » toutes les 15 minutes

Par défaut, l'objet CNO (Cluster Name Object) passe au système DNS toutes les 15 minutes pour vérifier que les enregistrements nécessaires existent toujours. Si la vérification échoue, vous recevez l'erreur d'enregistrement La ressource de nom de réseau du cluster « Nom du cluster ».

Cette erreur se produit souvent lorsque l'objet CNO ne dispose pas d'autorisations sur l'enregistrement DNS du cluster pour le nom de réseau dans le cluster. Pour résoudre ce problème, accordez le contrôle total à l'objet CNO sur l'enregistrement DNS. Par défaut, le cluster accorde généralement ces autorisations au moment de la création.

Si vous utilisez un enregistrement DNS statique ou si vous ne souhaitez pas que le cluster continue à mettre à jour vos enregistrements DNS, procédez comme suit :

  1. Accédez à ncpa.cpl, Propriétés de la carte NIC, Propriétés Ipv4, Avancé, DNS.
  2. Désélectionnez la case Enregistrer les adresses de cette connexion dans DNS.

Vous ne parvenez pas à créer un écouteur SQL

SQL Server est lent et les applications provoque la journalisation d'erreurs de dépassement de délai

Déterminez s'il existe un problème d'utilisation élevée de la mémoire ou du processeur ou un goulot d'étranglement au niveau du disque sur le serveur SQL :

Vérifiez la consommation élevée de mémoire élevée sur votre système d'exploitation. Ouvrez le Gestionnaire des tâches, puis sélectionnez l'onglet Performances. Si vous constatez une consommation de mémoire élevée, plafonnez la mémoire SQL si elle n'est pas déjà plafonnée. Si la mémoire SQL est déjà plafonnée, accédez à l'Analyseur de performances Windows (perfmon) pour identifier l'application qui utilise la mémoire. Vous pouvez définir perfmon localement ou à distance.

Vérifiez si l'utilisation du processeur est élevée sur le système d'exploitation. Ouvrez le Gestionnaire des tâches, puis sélectionnez l'onglet Performances. Vous pouvez également consulter les métriques AWS CloudWatch. Accédez à l'Analyseur de performances Windows pour identifier l'application qui utilise la mémoire. L'utilisation élevée du processeur est généralement provoquée par un pilote obsolète. Effectuez la mise à niveau vers la dernière version des pilotes PV.. Vous pouvez également mettre à niveau les pilotes AWS NVMe vers la dernière version.

Vérifiez que la consommation de disque est élevée sur le serveur, que le volume est lent ou qu'il existe de nombreuses I/O. Comme dans le cas d'une utilisation élevée du processeur, les pilotes obsolètes peuvent entraîner une consommation de disque. Effectuez la mise à niveau vers la dernière version des pilotes PV. Vous pouvez également mettre à niveau les pilotes AWS NVMe vers la dernière version. Si le problème persiste après la mise à jour des pilotes, configurez perfmon pour déterminer ce qui consomme des I/O de disque.

L'ajout d'un nœud échoue avec une erreur d'informations d'identification non valides après avoir détecté les paramètres d'un serveur distinct sur la configuration SQL

Vérifiez que l'une des situations suivantes est vraie :

  • Le nom du compte de l'agent SQL est vide dans le programme d'installation SQL sur le nœud secondaire après avoir détecté les détails du deuxième serveur.
  • La clé de registre HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.SQL2014\ConfigurationState possède une ou plusieurs clés ayant la valeur 2.

Si l'un des éléments précédents ou les deux sont vrais, procédez comme suit :

1.    Ouvrez Microsoft PowerShell, puis exécutez la commande suivante :

$ClusterName = "YourClusterName"
$FciClusterGroupName = "SQL Server (MSSQLSERVER)"
Add-ClusterResourceType -Name "SQL Server Agent" -Dll "sqagtres.dll"

Remarque : modifiez les noms de variables, tels que YourClusterName, dans les exemples de commandes précédents pour qu'ils correspondent à votre environnement.

2.    Ouvrez le Failover Cluster Manager (Gestionnaire de clusters de basculement), puis sélectionnez Roles (Rôles), SQL Role (rôle SQL), Add a resource (Ajouter une ressource), More resources (Plus de ressources).

3.    Sélectionnez New SQL Server Agent (Nouvel agent SQL Server), Properties (Propriétés), Dependencies (Dépendances).

4.    Dans le champ Resource (Ressource), sélectionnez SQL Server.

5.    Sélectionnez l'onglet Properties (Propriétés), puis saisissez le nom de votre instance SQL Server dans le champ InstanceName. Ensuite, saisissez le nom du cluster SQL dans le champ VirtualServerName. Le nouvel agent SQL Server démarre.

6.    Veillez à remplacer la valeur de toutes les clés par la valeur 1 dans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.SQL2014\ConfigurationState.

7.    Exécutez à nouveau le programme d'installation. Vous pouvez désormais ajouter des nœuds sans recevoir d'erreurs d'identification.