Détecter un problème sur SQL Server sur Linux
S’applique à :SQL Server - Linux
Cet article explique comment résoudre les problèmes liés à l’exécution de SQL Server sur Linux ou dans un conteneur Linux. 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.
Pour obtenir des réponses aux questions fréquemment posées, consultez la FAQ de SQL Server sur Linux.
Dépannage des échecs de connexion
Si vous avez des difficultés à vous connecter à votre instance SQL Server Linux, vous devez vérifier quelques points.
Si vous ne parvenez pas à vous connecter localement à l’aide de localhost, essayez d’utiliser plutôt l’adresse IP 127.0.0.1. 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
:sudo ifconfig eth0 | grep 'inet addr'
Pour Red Hat, vous pouvez utiliser la commande
ip addr
: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 pas de fautes de frappe, d’espaces supplémentaires 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
La section suivante montre comment gérer l’exécution des conteneurs Docker SQL Server. Pour gérer les services sur Linux, consultez Démarrage, arrêt et redémarrage des services SQL Server sur Linux.
Gérer l’exécution du conteneur Docker SQL Server
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 base de données SQL Server consigne dans le fichier /var/opt/mssql/log/errorlog
dans les installations Linux et de conteneur. Vous devez être en mode superutilisateur pour parcourir ce répertoire.
Le programme d’installation consigne les journaux dans /var/opt/mssql/setup-<time stamp representing time of install>
. Parcourez les fichiers du journal des erreurs avec n’importe quel outil compatible à UTF-16, par exemple vim ou cat :
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. Pour plus d’informations, consultez Événements étendus.
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
) et les minidumps SQL (extension .mdmp
).
Par exemple, procédez comme suit pour afficher les vidages Core :
sudo ls /var/opt/mssql/log | grep .tar.gz2
Pour les dumps SQL, utilisez le script suivant :
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
Ce mode 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
Il est parfois nécessaire de démarrer une instance de SQL Server en mode mono-utilisateur à l’aide de l’option de démarrage -m. Pour plus d’informations, consultez Paramètres de démarrage. 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.
Par exemple, utilisez le script suivant pour démarrer SQL Server en mode mono-utilisateur :
sudo -u mssql /opt/mssql/bin/sqlservr -m
Ce script démarre SQL Server en mode mono-utilisateur avec sqlcmd :
sudo -u mssql /opt/mssql/bin/sqlservr -m sqlcmd
Démarrez toujours SQL Server sur Linux avec l’utilisateur mssql afin d’éviter les problèmes de démarrage ultérieurs. Par exemple : sudo -u mssql /opt/mssql/bin/sqlservr [STARTUP OPTIONS]
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 transmettre à l’utilisateur mssql la propriété de tous les fichiers de base de données situés sous /var/opt/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.
Ce processus est dangereux, car il implique de supprimer toutes les données système SQL Server que vous avez configurées, y compris les informations relatives à vos bases de données utilisateur (mais pas les bases de données utilisateur elles-mêmes). Vous devrez par la suite attacher les bases de données utilisateur à l’instance. Sont également supprimées d’autres informations stockées dans les bases de données système :
- Informations sur la clé principale de base de données
- Tous les certificats chargés dans
master
- Mot de passe de connexion d’administrateur système (AS)
- Informations relatives aux travaux provenant de
msdb
- Informations Database Mail provenant de
msdb
sp_configure
options
Vous ne pouvez rattacher les bases de données utilisateur chiffrées avec Transparent Data Encryption (TDE) que si vos certificats et clés privées sont également sauvegardés.
Ne suivez cette procédure que si vous en comprenez les implications.
Arrêter le moteur de base de données SQL Server
sudo systemctl stop mssql-server
Exécutez sqlservr avec le paramètre force-setup.
sudo -u mssql /opt/mssql/bin/sqlservr --force-setup
Démarrez toujours SQL Server sur Linux avec l’utilisateur mssql afin d’éviter les problèmes de démarrage ultérieurs.
Une fois que vous voyez le message « La récupération est terminée », appuyez sur Ctrl + C. Cela arrête SQL Server.
Reconfigurez le mot de passe.
sudo /opt/mssql/bin/mssql-conf set-sa-password
Démarrez SQL Server et reconfigurez le serveur, en restaurant ou en rattachant toutes les bases de données utilisateur.
sudo systemctl start mssql-server
Améliorer les performances
De nombreux facteurs ont une incidence sur 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.
- Magasin de requêtes
- Vues de gestion dynamique système (DMV)
- Tableau de bord des performances dans SQL Server Management Studio
Problèmes courants
Vous ne pouvez pas vous connecter à votre instance SQL Server distante.
Consultez la section Résolution des problèmes de l'article Se connecter à SQL Server sur Linux.
Vous rencontrez le message d’erreur : ERREUR : Le nom d’hôte ne doit pas comporter plus de 15 caractères.
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 comporte plus de 15 caractères. Il n’existe actuellement aucune solution de contournement autre que la modification du nom de la machine. Vous pouvez modifier le fichier de nom d’hôte et redémarrer l’ordinateur. Cette procédure est expliquée en détail dans le Guide de site web suivant.
Le mot de passe d’administration de système (AS) doit être réinitialisé, ce qui arrête temporairement le service SQL Server.
Si vous avez oublié le mot de passe AS ou que vous devez le réinitialiser pour une raison quelconque, procédez comme suit.
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
La présence de caractères spéciaux dans les mots de passe de connexion provoque des erreurs ou des échecs de connexion.
En fonction des caractères utilisés dans le mot de passe de connexion SQL Server, vous devrez peut-être ajouter un caractère d’échappement (barre oblique inverse) pour vous en servir dans une commande Linux. 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
Obtenir de l’aide
- Idées pour SQL : vous avez des suggestions pour améliorer SQL Server ?
- Questions et réponses Microsoft (SQL Server)
- DBA Stack Exchange (balise sql-server) : posez des questions sur SQL Server
- Stack Overflow (balise sql-server) : réponses aux questions sur le développement SQL
- Reddit : discussion générale sur SQL Server
- Termes du contrat de licence Microsoft SQL Server et autres informations
- Options de support pour les utilisateurs professionnels
- Contacter Microsoft
- Aide et commentaires supplémentaires pour SQL Server