Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server sur 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 quelocalhostne 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 du compte
sa - Informations relatives aux travaux provenant de
msdb - Informations Database Mail provenant de
msdb - Options
sp_configure
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-serverExécutez sqlservr avec le paramètre
force-setupsudo -u mssql /opt/mssql/bin/sqlservr --force-setupDémarrez toujours SQL Server sur Linux avec l’utilisateur
mssqlafin 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.
Reconfigurer le mot de passe
sa.sudo /opt/mssql/bin/mssql-conf set-sa-passwordAttention
Votre mot de passe doit suivre la politique de mot de passe par défaut de SQL Server. Par défaut, le mot de passe doit avoir au moins huit caractères appartenant à trois des quatre groupes suivants : lettres majuscules, lettres minuscules, chiffres de base 10 et symboles. Les mots de passe peuvent comporter jusqu'à 128 caractères. Utilisez des mots de passe aussi longs et complexes que possible.
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/hostnameet/etc/hosts, modifiez le nom d’hôte, enregistrez chaque fichier et redémarrez l’ordinateur.Le mot de passe de l'administrateur système (
sa) doit être réinitialisé, ce qui arrête temporairement le service SQL Server.Si vous oubliez le mot de passe
saou devez le réinitialiser pour une autre raison, suivez ces étapes.Connectez-vous au terminal hôte, exécutez les commandes suivantes et suivez les instructions pour réinitialiser le mot de passe
sa:sudo systemctl stop mssql-server sudo /opt/mssql/bin/mssql-conf setupAttention
Votre mot de passe doit suivre la politique de mot de passe par défaut de SQL Server. Par défaut, le mot de passe doit avoir au moins huit caractères appartenant à trois des quatre groupes suivants : lettres majuscules, lettres minuscules, chiffres de base 10 et symboles. Les mots de passe peuvent comporter jusqu'à 128 caractères. Utilisez des mots de passe aussi longs et complexes que possible.
Les caractères spéciaux dans les mots de passe peuvent provoquer des erreurs ou des échecs de connexion.
Si vous utilisez certains caractères dans le mot de passe SQL Server, vous devrez peut-être les échapper avec une barre oblique inverse lorsque vous les utilisez sur la ligne de commande Linux. Par exemple, vous devez échapper le signe dollar (
$) chaque fois que vous l'utilisez dans une commande de terminal/un script shell :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
- 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 Modifier la documentation Microsoft Learn.