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épannez le SQL Server sur Linux, n’oubliez pas de consulter les fonctionnalités prises en charge et les limitations connues :
- Notes de publication pour SQL Server 2022 sur Linux
- Notes de publication pour SQL Server 2019 sur Linux
- Notes de publication pour SQL Server 2017 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 quelocalhost
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.
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"
Conseil
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 Linux 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 Linux SQL Server
Vous pouvez accéder à l’état et à l’ID de conteneur du dernier conteneur Linux SQL Server créé en exécutant la commande suivante (l’ID se trouve sous la colonne CONTAINER ID
) :
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 aux conteneurs Docker, consultez Résoudre 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.
Les logs de l'installateur sont ici : /var/opt/mssql/setup-<time stamp representing time of install>
Vous pouvez parcourir les fichiers errorlog
avec n'importe quel outil compatible UTF-16 comme vim ou cat comme ceci :
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) empêche 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écupérer 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 démarrez 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 changer la propriété de tous les fichiers de base de données sous /var/opt/mssql
à 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
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 devez 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 (DMK)
- Tous les certificats chargés dans
master
- le mot de passe pour la connexion SA
- 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.
- Superviser le niveau de performance avec le Magasin des requêtes
- Vues de gestion dynamique système
- 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 :
ERROR: Hostname must be 15 characters or less.
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. Pour ce faire, modifiez les deux
/etc/hostname
et/etc/hosts
, modifiez le nom d’hôte, enregistrez chaque fichier et redémarrez l’ordinateur.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\$\$
Contenu connexe
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
- Aide et commentaires supplémentaires pour SQL Server
Contribuer à la documentation SQL
Saviez-vous que vous pouvez modifier le contenu SQL vous-même ? Dans ce cas, non seulement vous nous aidez à améliorer notre documentation, mais vous êtes également cité en tant que contributeur à la page.
Pour plus d’informations, consultez le Guide pratique pour contribuer à la documentation SQL Server