Résoudre les problèmes de SQL Server sur LinuxTroubleshoot SQL Server on Linux

Cette rubrique s’applique à : OuiSQL Server (Linux uniquement)aucunbase de données SQL AzureaucunAzure SQL Data Warehouseaucun Parallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (Linux only)noAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

Ce document décrit comment résoudre les problèmes de Microsoft SQL Server s'exécutant sur Linux ou dans un conteneur Docker.This document describes how to troubleshoot Microsoft SQL Server running on Linux or in a Docker container. Lors du dépannage de 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.When troubleshooting SQL Server on Linux, remember to review the supported features and known limitations in the SQL Server on Linux Release Notes.

Conseil

Pour obtenir des réponses aux questions fréquemment posées, consultez le SQL Server sur le Forum aux questions sur Linux.For answers to frequently asked questions, see the SQL Server on Linux FAQ.

Résoudre les échecs de connexionTroubleshoot connection failures

Si vous rencontrez des difficultés pour vous connecter à votre serveur SQL Server sous Linux, il existe quelques éléments à vérifier.If you are having difficulty connecting to your Linux SQL Server, there are a few things to check.

  • Vérifiez que le nom du serveur ou l’adresse IP est accessible à partir de votre ordinateur client.Verify that the server name or IP address is reachable from your client machine.

    Conseil

    Pour rechercher l’adresse IP de votre machine Ubuntu, vous pouvez exécuter la commande ifconfig comme dans l’exemple suivant :To find the IP address of your Ubuntu machine, you can run the ifconfig command as in the following example:

    sudo ifconfig eth0 | grep 'inet addr'
    

    Pour Red Hat, vous pouvez utiliser l’adresse ip, comme dans l’exemple suivant :For Red Hat, you can use the ip addr as in the following example:

    sudo ip addr show eth0 | grep "inet"
    

    Une exception à cette technique concerne les machines virtuelles Azure.One exception to this technique relates to Azure VMs. Pour les machines virtuelles Azure, rechercher l’adresse IP publique de la machine virtuelle dans le portail Azure.For Azure VMs, find the public IP for the VM in the Azure portal.

  • Le cas échéant, vérifiez que vous avez ouvert le port SQL Server (1433 par défaut) sur le pare-feu.If applicable, check that you have opened the SQL Server port (default 1433) on the firewall.

  • Pour les machines virtuelles Azure, vérifiez que vous avez une règle de groupe de sécurité réseau pour le port de SQL Server par défaut.For Azure VMs, check that you have a network security group rule for the default SQL Server port.

  • Vérifiez que le nom d’utilisateur et le mot de passe ne contiennent pas de fautes de frappe, ni d'espaces, ni une casse incorrecte.Verify that the user name and password do not contain any typos or extra spaces or incorrect casing.

  • Essayez de définir explicitement le numéro de port et de protocole avec le nom du serveur à l’exemple suivant : tcp:servername, 1433.Try to explicitly set the protocol and port number with the server name like the following example: tcp:servername,1433.

  • Des problèmes de connectivité réseau peuvent également entraîner des délais d’attente et des erreurs de connexion.Network connectivity issues can also cause connection errors and timeouts. Après avoir vérifié vos informations de connexion et la connectivité réseau, recommencez l’opération.After verifying your connection information and network connectivity, try the connection again.

Gérer le service SQL ServerManage the SQL Server service

Les sections suivantes montrent comment démarrer, arrêter, redémarrer et vérifier l’état du service SQL Server.The following sections show how to start, stop, restart, and check the status of the SQL Server service.

Gérer le service mssql-server sous Red Hat Enterprise Linux (RHEL) et UbuntuManage the mssql-server service in Red Hat Enterprise Linux (RHEL) and Ubuntu

Vérifiez l’état du service SQL Server à l’aide de cette commande :Check the status of the SQL Server service using this command:

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 :You can stop, start, or restart the SQL Server service as needed using the following commands:

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

Gérer l’exécution du conteneur Docker mssqlManage the execution of the mssql Docker container

Vous pouvez obtenir l’ID de conteneur et d’état du dernier conteneur Docker de serveur SQL créé en exécutant la commande suivante (l’ID est sous le ID de conteneur colonne) :You can get the status and container ID of the latest created SQL Server Docker container by running the following command (The ID is under the CONTAINER ID column):

sudo docker ps -l

Vous pouvez arrêter ou redémarrer le service SQL Server en fonction des besoins à l’aide des commandes suivantes :You can stop or restart the SQL Server service as needed using the following commands:

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

Conseil

Pour obtenir des conseils de dépannage supplémentaires pour Docker, consultez conteneurs dépannage de SQL Server Docker.For more troubleshooting tips for Docker, see Troubleshooting SQL Server Docker containers.

Accéder aux fichiers journauxAccess the log files

SQL Server stocke ses journaux dans le fichier /var/opt/mssql/log/errorlog dans les installations sous Linux et Docker. The SQL Server engine logs to the /var/opt/mssql/log/errorlog file in both the Linux and Docker installations. Vous devez être en mode de 'super utilisateur' pour parcourir ce répertoire.You need to be in ‘superuser’ mode to browse this directory.

Le programme d’installation enregistre ici : /var/opt/mssql/setup-< horodatage qui représente l'heure d’installation> Vous pouvez parcourir les fichiers journaux des erreurs avec n’importe quel outil compatible UTF-16 tel que « vim » ou « cat » comme suit :The installer logs here: /var/opt/mssql/setup-< time stamp representing time of install> You can browse the errorlog files with any UTF-16 compatible tool like ‘vim’ or ‘cat’ like this:

sudo cat errorlog

Si vous préférez, vous pouvez également convertir les fichiers vers UTF-8 pour les lire avec « more » ou « less » avec la commande suivante :If you prefer, you can also convert the files to UTF-8 to read them with ‘more’ or ‘less’ with the following command:

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

Événements étendusExtended events

Les événements étendus peuvent être interrogées via une commande SQL.Extended events can be queried via a SQL command. Plus d’informations sur les événements étendus accessibles ici:More information about extended events can be found here:

Vidages sur incidentCrash dumps

Recherchez les vidages dans le répertoire de journaux dans Linux.Look for dumps in the log directory in Linux. Recherchez dans le répertoire /var/opt/mssql/log les vidages Linux Core (extension .tar.gz2) ou les mini-vidages SQL (extension .mdmp)Check under the /var/opt/mssql/log directory for Linux Core dumps (.tar.gz2 extension) or SQL minidumps (.mdmp extension)

Pour les vidagesFor Core dumps

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

Pour les sauvegardes SQLFor SQL dumps

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

Démarrage de SQL Server dans une Configuration minimale ou en Mode mono-utilisateurStart SQL Server in Minimal Configuration or in Single User Mode

Démarrage de SQL Server en Mode Configuration minimaleStart SQL Server in Minimal Configuration Mode

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.This is useful if the setting of a configuration value (for example, over-committing memory) has prevented the server from starting.

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

Démarrage de SQL Server en Mode mono-utilisateurStart SQL Server in Single User Mode

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.Under certain circumstances, you may have to start an instance of SQL Server in single-user mode by using the startup option -m. Vous pouvez par exemple vouloir modifier les options de configuration du serveur ou rétablir une base de données maître ou une autre base de données système endommagée.For example, you may want to change server configuration options or recover a damaged master database or other system database. Par exemple, vous pouvez vouloir modifier les options de configuration du serveur ou récupérer une base de données maître endommagée ou une autre base de données systèmeFor example, you may want to change server configuration options or recover a damaged master database or other system database

Démarrage de SQL Server en Mode mono-utilisateurStart SQL Server in Single User Mode

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

Démarrage de SQL Server en Mode mono-utilisateur avec SQLCMDStart SQL Server in Single User Mode with SQLCMD

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

Avertissement

Démarrez SQL Server sous Linux avec l’utilisateur « mssql » afin d’éviter les problèmes de démarrage à l'avenir.Start SQL Server on Linux with the "mssql" user to prevent future startup issues. Exemple « sudo -u mssql /opt/mssql/bin/sqlservr [OPTIONS DE DÉMARRAGE] »Example "sudo -u mssql /opt/mssql/bin/sqlservr [STARTUP OPTIONS]"

Si vous avez démarré par inadvertance SQL Server avec un autre utilisateur, vous devez changer la propriété des fichiers de base de données SQL Server pour l'attribuer à l’utilisateur 'mssql' avant de démarrer SQL Server avec systemd.If you have accidentally started SQL Server with another user, you must change ownership of SQL Server database files back to the 'mssql' user prior to starting SQL Server with systemd. Par exemple, exécutez la commande suivante pour modifier la propriété de tous les fichiers de base de données sous /var/opt/mssql sur l’utilisateur « mssql »,For example, to change ownership of all database files under /var/opt/mssql to the 'mssql' user, run the following command

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

Reconstruire des bases de données systèmeRebuild system databases

En dernier recours, vous pouvez choisir de recréer le fichier principal et bases de données de modèle dans les versions par défaut.As a last resort, you can choose to rebuild the master and model databases back to default versions.

Avertissement

Ces étapes seront supprimer toutes les données du système SQL Server que vous avez configuré !These steps will DELETE all SQL Server system data that you have configured! Cela inclut des informations sur les bases de données (mais pas les bases de données utilisateur eux-mêmes).This includes information about your user databases (but not the user databases themselves). Autres informations stockées dans les bases de données système, y compris les éléments suivants seront également supprimés : informations de clé principale, les certificats chargés dans master, le mot de passe de connexion SA, les informations liées à la tâche à partir de msdb, les informations de messagerie de base de données msdb, et que les options de sp_configure.It will also delete other information stored in the system databases, including the following: master key information, any certs loaded in master, the SA Login password, job-related information from msdb, DB Mail information from msdb, and sp_configure options. Utiliser uniquement si vous comprenez les implications !Only use if you understand the implications!

  1. Arrêt de SQL Server.Stop SQL Server.

    sudo systemctl stop mssql-server
    
  2. Exécutez sqlservr avec la le programme d’installation-force paramètre.Run sqlservr with the force-setup parameter.

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

    Avertissement

    Consultez l’avertissement précédent !See the previous warning! En outre, vous devez exécuter en tant que le mssql utilisateur comme indiqué ici.Also, you must run this as the mssql user as shown here.

  3. Une fois que vous voyez le message « Récupération est terminée », appuyez sur CTRL + C.After you see the message "Recovery is complete", press CTRL+C. SQL Server s’arrêteThis will shut down SQL Server

  4. Reconfigurer le mot de passe SA.Reconfigure the SA password.

    sudo /opt/mssql/bin/mssql-conf set-sa-password
    
  5. Démarrage de SQL Server et reconfigurer le serveur.Start SQL Server and reconfigure the server. Cela inclut la restauration ou attachement de nouveau toutes les bases de données utilisateur.This includes restoring or re-attaching any user databases.

    sudo systemctl start mssql-server
    

Problèmes courantsCommon issues

  1. Impossible de se connecter à votre instance de SQL Server à distance.You cannot connect to your remote SQL Server instance.

    Consultez la section Dépannage de l’article, se connecter à SQL Server sur Linux.See the troubleshooting section of the article, Connect to SQL Server on Linux.

  2. Erreur : Le nom d’hôte doit compter 15 caractères maximum.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 l’ordinateur sur lequel on tente d’installer le package Debian SQL Server est supérieur à 15 caractères.This is a known-issue that happens whenever the name of the machine that is trying to install the SQL Server Debian package is longer than 15 characters. Il n’existe actuellement aucune solution de contournement autre que la modification du nom de l’ordinateur.There are currently no workarounds other than changing the name of the machine. Une façon d’effectuer cette opération est de modifier le fichier de nom d’hôte et de redémarrer l’ordinateur.One way to achieve this is by editing the hostname file and rebooting the machine. Le guide du site Web suivant explique cela en détail.The following website guide explains this in detail.

  3. La réinitialisation de mot de passe système (SA) d’administration.Resetting the system administration (SA) password.

    Si vous avez oublié le mot de passe d’administrateur système ou que vous devez le réinitialiser pour une raison quelconque, procédez comme suit.If you have forgotten the system administrator (SA) password or need to reset it for some other reason, follow these steps.

    Note

    Les étapes suivantes arrêter le service SQL Server temporairement.The following steps stop the SQL Server service temporarily.

    Connectez vous au terminal de l’ordinateur hôte, exécutez les commandes suivantes, suivez les invites pour réinitialiser le mot de passe SA :Log into the host terminal, run the following commands and follow the prompts to reset the SA password:

    sudo systemctl stop mssql-server
    sudo /opt/mssql/bin/mssql-conf setup
    
  4. Utiliser des caractères spéciaux dans le mot de passe.Using special characters in password.

    Si vous utilisez des caractères dans le mot de passe du compte de connexion SQL Server, vous devrez peut-être caractère d’échappement avec une barre oblique inverse lorsque vous les utilisez dans une commande de Linux dans le terminal.If you use some characters in the SQL Server login password, you might need to escape them with a backslash when you use them in a Linux command in the terminal. Par exemple, vous devez isoler le symbole dollar ($) chaque fois que vous l’utilisez dans un script de shell de commande/Terminal Server :For example, you must escape the dollar sign ($) anytime you use it in a terminal command/shell script:

    Ne fonctionne pas :Does not work:

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

    Fonctionne :Works:

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

    Ressources : des caractères spéciaux EscapingResources: Special characters Escaping

info_tip Obtenir de l’aideGet Help