Détecter un problème sur SQL Server sur Linux

S’applique à : ouiSQL Server (toutes les versions prises en charge) - Linux

Ce document décrit comment détecter un problème sur Microsoft SQL Server s’exécutant sur Linux ou dans un conteneur Docker. Lorsque vous détectez un problème sur SQL Server sur Linux, n’oubliez pas de consulter les fonctionnalités prises en charge et les limitations connues dans les Notes de publication de SQL Server sur Linux.

Conseil

Pour obtenir des réponses aux questions fréquemment posées, consultez la FAQ de SQL Server sur Linux.

Détecter un problème relatif aux échecs de connexion

Si vous avez des difficultés à vous connecter à votre SQL Server Linux, vous devez vérifier quelques points.

  • Si vous ne parvenez pas à vous connecter localement à l’aide de localhost, essayez d’utiliser l’adresse IP 127.0.0.1 à la place. Il est possible que localhost ne soit pas correctement mappé à cette adresse.

  • Vérifiez que le nom du serveur ou l’adresse IP est accessible à partir de votre machine client.

    Conseil

    Pour trouver l’adresse IP de votre machine Ubuntu, vous pouvez exécuter la commande ifconfig comme dans l’exemple suivant :

    sudo ifconfig eth0 | grep 'inet addr'
    

    Pour Red Hat, vous pouvez utiliser l’adresse IP comme dans l’exemple suivant :

    sudo ip addr show eth0 | grep "inet"
    

    Une exception à cette technique est associée aux machines virtuelles Azure. Pour les machines virtuelles Azure, recherchez l’adresse IP publique de la machine virtuelle dans la Portail Azure.

  • Le cas échéant, vérifiez que vous avez ouvert le port SQL Server (par défaut 1433) sur le pare-feu.

  • Pour les machines virtuelles Azure, vérifiez que vous disposez d’une règle de groupe de sécurité réseau pour le port SQL Server par défaut.

  • Vérifiez que le nom d’utilisateur et le mot de passe ne contiennent aucune faute de frappe ni d’espace supplémentaire ni de casse incorrecte.

  • Essayez de définir explicitement le protocole et le numéro de port avec le nom du serveur, comme dans l’exemple suivant : tcp:servername,1433.

  • Des problèmes de connectivité réseau peuvent également entraîner des délais d’attente et des erreurs de connexion. Une fois que vous avez vérifié vos informations de connexion et la connectivité réseau, réessayez de vous connecter.

Gérer le service SQL Server

Les sections suivantes indiquent comment démarrer, arrêter, redémarrer et vérifier l’état du service SQL Server.

Gérer le service mssql-server dans Red Hat Enterprise Linux (RHEL) et Ubuntu

Vérifiez l’état du service SQL Server à l’aide de cette commande :

sudo systemctl status mssql-server

Vous pouvez arrêter, démarrer ou redémarrer le service SQL Server en fonction des besoins à l’aide des commandes suivantes :

sudo systemctl stop mssql-server
sudo systemctl start mssql-server
sudo systemctl restart mssql-server

Gérer l’exécution du conteneur Docker mssql

Vous pouvez accéder à l’état et à l’ID de conteneur du dernier conteneur Docker SQL Server créé en exécutant la commande suivante (l’ID se trouve sous la colonne ID DE CONTENEUR) :

sudo docker ps -l

Vous pouvez arrêter ou redémarrer le service SQL Server en fonction des besoins à l’aide des commandes suivantes :

sudo docker stop <container ID>
sudo docker restart <container ID>

Conseil

Pour plus de conseils sur la résolution des problèmes liés à Docker, consultez Résolution des problèmes de conteneurs Docker SQL Server.

Accéder aux fichiers journaux

Le moteur de SQL Server se connecte au fichier /var/opt/mssql/log/errorlog à la fois dans les installations Linux et Docker. Vous devez être en mode « superutilisateur » pour parcourir ce répertoire.

Le programme d’installation se connecte ici : /var/opt/mssql/setup-< horodatage représentant l’heure de l’installation > Vous pouvez parcourir les fichiers ErrorLog avec n’importe quel outil compatible à UTF-16, par exemple « vim » ou « cat » comme suit :

sudo cat errorlog

Si vous préférez, vous pouvez également convertir les fichiers au format UTF-8 pour les lire avec « plus » ou « moins » à l’aide de la commande suivante :

sudo iconv -f UTF-16LE -t UTF-8 <errorlog> -o <output errorlog file>

Événements étendus

Les événements étendus peuvent être interrogés à l’aide d’une commande SQL. Plus d’informations sur les événements étendus peuvent être obtenues ici :

Vidages sur incident

Recherchez des vidages sur incident dans le répertoire de journaux Linux. Vérifiez dans le répertoire /var/opt/mssql/log les vidages Linux Core (extension .tar.gz2) ou les minidumps SQL (extension .mdmp)

Pour les vidages Core

sudo ls /var/opt/mssql/log | grep .tar.gz2 

Pour les vidages SQL

sudo ls /var/opt/mssql/log | grep .mdmp 

Démarrer SQL Server en mode de configuration minimale ou en mode mono-utilisateur

Démarrer SQL Server en mode de configuration minimale

Cette option est utile lorsqu'une valeur de configuration définie (espace mémoire insuffisant, par exemple) a empêché le serveur de démarrer.

sudo -u mssql /opt/mssql/bin/sqlservr -f

Démarrer SQL Server en mode mono-utilisateur

Dans certaines circonstances, vous devrez peut-être démarrer une instance de SQL Server en mode mono-utilisateur à l’aide de l’option de démarrage -m. Vous pouvez par exemple vouloir modifier les options de configuration du serveur ou rétablir une base de données master ou une autre base de données système endommagées. Vous pouvez par exemple vouloir modifier les options de configuration du serveur ou rétablir une base de données MASTER ou une autre base de données système endommagée

Démarrer SQL Server en mode mono-utilisateur

sudo -u mssql /opt/mssql/bin/sqlservr -m

Démarrer SQL Server en mode mono-utilisateur avec SQLCMD

sudo -u mssql /opt/mssql/bin/sqlservr -m SQLCMD

Avertissement

Démarrez SQL Server sur Linux avec l’utilisateur « mssql » afin d’éviter les problèmes de démarrage futurs. Exemple « sudo -u mssql /opt/mssql/bin/sqlservr [OPTIONS DE DÉMARRAGE] »

Si vous avez démarré accidentellement SQL Server avec un autre utilisateur, vous devez remplacer la propriété des fichiers de base de données SQL Server par l’utilisateur « mssql » avant de démarrer SQL Server avec SystemD. Par exemple, pour modifier la propriété de tous les fichiers de base de données sous /var/opt/mssql pour l’utilisateur « mssql », exécutez la commande suivante

chown -R mssql:mssql /var/opt/mssql/

Reconstruire des bases de données système

En dernier recours, vous pouvez choisir de régénérer les bases de données MASTER et model vers les versions par défaut.

Avertissement

Ces étapes SUPPRIMENT toutes les données système SQL Server que vous avez configurées ! Cela comprend des informations sur vos bases de données utilisateur (mais pas sur les bases de données utilisateur elles-mêmes). Elles suppriment également les autres informations stockées dans les bases de données système, y compris les informations suivantes : de clé principale, les certificats chargés dans le MASTER, le mot de passe de connexion SA, les informations relatives aux tâches de msdb, les informations de messagerie de la base de données de msdb et les options sp_configure. Utilisez uniquement si vous comprenez les implications !

  1. Arrêtez SQL Server.

    sudo systemctl stop mssql-server
    
  2. Exécutez sqlservr avec le paramètre force-setup.

    sudo -u mssql /opt/mssql/bin/sqlservr --force-setup
    

    Avertissement

    Consultez l’avertissement précédent ! En outre, vous devez l'exécuter en tant qu’utilisateur mssql comme indiqué ici.

  3. Une fois que vous voyez le message « La récupération est terminée », appuyez sur CTRL + C. Cela arrête SQL Server

  4. Reconfigurez le mot de passe.

    sudo /opt/mssql/bin/mssql-conf set-sa-password
    
  5. Démarrez SQL Server et reconfigurez le serveur. Cela comprend la restauration ou la réassociation de toutes les bases de données utilisateur.

    sudo systemctl start mssql-server
    

Améliorer les performances

De nombreux facteurs affectent les performances, notamment la conception de bases de données, le matériel et les demandes de charge de travail. Si vous cherchez à améliorer les performances, commencez par consulter les meilleures pratiques dans l'article Meilleures pratiques en matière de performances et lignes directrices de configuration pour SQL Server sur Linux. Explorez ensuite certains des outils disponibles pour résoudre les problèmes de performances.

Problèmes courants

  1. Vous ne pouvez pas vous connecter à votre instance distante.

    Consultez la section Résolution des problèmes de l'article Se connecter à SQL Server sur Linux.

  2. ERREUR : Le nom d’hôte doit comporter 15 caractères au maximum.

    Il s’agit d’un problème connu qui se produit chaque fois que le nom de la machine qui tente d’installer le package SQL Server Debian comporte plus de 15 caractères. Il n’existe actuellement aucune solution de contournement autre que la modification du nom de la machine. Une façon d’y parvenir consiste à modifier le fichier de nom d’hôte et à redémarrer la machine. Le Guide du site Web suivant explique cela en détail.

  3. Réinitialisation du mot de passe d’administration de système (SA).

    Si vous avez oublié le mot de passe de l’administrateur système ou si vous devez le réinitialiser pour une raison quelconque, procédez comme suit.

    Notes

    Les étapes suivantes arrêtent temporairement le service SQL Server.

    Connectez-vous au terminal hôte, exécutez les commandes suivantes et suivez les invites pour réinitialiser le mot de passe SA :

    sudo systemctl stop mssql-server
    sudo /opt/mssql/bin/mssql-conf setup
    
  4. Utilisation de caractères spéciaux dans un mot de passe.

    Si vous utilisez des caractères dans le mot de passe de connexion SQL Server, vous devrez peut-être y ajouter un caractère d’échappement avec une barre oblique inverse quand vous les utilisez dans une commande Linux dans le terminal. Par exemple, vous devez y ajouter le caractère d’échappement signe dollar ($) chaque fois que vous l’utilisez dans un script de commande/shell de terminal :

    Ne fonctionne pas :

    sudo sqlcmd -S myserver -U sa -P Test$$
    

    Fonctionne :

    sqlcmd -S myserver -U sa -P Test\$\$
    

    Ressources : Caractères spéciaux Échappement

Obtenir de l’aide