Risolvere i problemi di SQL Server in LinuxTroubleshoot SQL Server on Linux

QUESTO ARGOMENTO SI APPLICA A: SìSQL Server (solo Linux)nonDatabase SQL di AzurenonAzure SQL Data Warehousenon Parallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (Linux only)noAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

Questo documento descrive come risolvere i problemi di Microsoft SQL Server in esecuzione in Linux o in un contenitore Docker.This document describes how to troubleshoot Microsoft SQL Server running on Linux or in a Docker container. La risoluzione dei problemi di SQL Server in Linux, ricordare di esaminare le funzionalità supportate e le limitazioni note nel SQL Server in note sulla versione di Linux.When troubleshooting SQL Server on Linux, remember to review the supported features and known limitations in the SQL Server on Linux Release Notes.

Suggerimento

Per le risposte alle domande più frequenti, vedere la SQL Server in Linux FAQ.For answers to frequently asked questions, see the SQL Server on Linux FAQ.

Risolvere gli errori di connessioneTroubleshoot connection failures

Se si verificano problemi di connessione a SQL Server a Linux, esistono alcuni aspetti da controllare.If you are having difficulty connecting to your Linux SQL Server, there are a few things to check.

  • Verificare che il nome del server o l'indirizzo IP sia raggiungibile dal computer client.Verify that the server name or IP address is reachable from your client machine.

    Suggerimento

    Per trovare l'indirizzo IP del computer Ubuntu, è possibile eseguire il comando ifconfig come nell'esempio seguente: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'
    

    Per Red Hat, è possibile usare l'indirizzo ip come nell'esempio seguente:For Red Hat, you can use the ip addr as in the following example:

    sudo ip addr show eth0 | grep "inet"
    

    Un'eccezione a questa tecnica è correlato alle macchine virtuali di Azure.One exception to this technique relates to Azure VMs. Per macchine virtuali di Azure trovare l'indirizzo IP pubblico per la macchina virtuale nel portale di Azure.For Azure VMs, find the public IP for the VM in the Azure portal.

  • Se applicabile, verificare di avere aperto la porta di SQL Server (valore predefinito 1433) nel firewall.If applicable, check that you have opened the SQL Server port (default 1433) on the firewall.

  • Per le VM di Azure, verificare di disporre di un regola gruppo di sicurezza di rete per la porta di SQL Server predefinita.For Azure VMs, check that you have a network security group rule for the default SQL Server port.

  • Verificare che il nome utente e la password non contengano eventuali errori di digitazione o spazi aggiuntivi o le maiuscole e minuscole non corretta.Verify that the user name and password do not contain any typos or extra spaces or incorrect casing.

  • Provare a impostare in modo esplicito il numero di porta e protocollo con il nome del server simile al seguente: tcp:servername, 1433.Try to explicitly set the protocol and port number with the server name like the following example: tcp:servername,1433.

  • Problemi di connettività di rete possono anche causare timeout ed errori di connessione.Network connectivity issues can also cause connection errors and timeouts. Dopo aver verificato le informazioni di connessione e la connettività di rete, provare nuovamente la connessione.After verifying your connection information and network connectivity, try the connection again.

Gestire il servizio SQL ServerManage the SQL Server service

Le sezioni seguenti illustrano come avviare, arrestare, riavviare e controllare lo stato del servizio SQL Server.The following sections show how to start, stop, restart, and check the status of the SQL Server service.

Gestire il servizio mssql-server Ubuntu e Red Hat Enterprise Linux (RHEL)Manage the mssql-server service in Red Hat Enterprise Linux (RHEL) and Ubuntu

Controllare lo stato del servizio SQL Server con il seguente comando:Check the status of the SQL Server service using this command:

sudo systemctl status mssql-server

È possibile arrestare, avviare o riavviare il servizio SQL Server in base alle esigenze usando i comandi seguenti: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

Gestire l'esecuzione del contenitore Docker mssqlManage the execution of the mssql Docker container

È possibile ottenere l'ID di contenitore e lo stato della versione più recente contenitore Docker di SQL Server creato eseguendo il comando seguente (ID è sotto la ID del contenitore colonna):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

È possibile arrestare o riavviare il servizio SQL Server in base alle esigenze usando i comandi seguenti: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>

Suggerimento

Per altri suggerimenti sulla risoluzione dei problemi per Docker, vedere contenitori Docker di risoluzione dei problemi di SQL Server.For more troubleshooting tips for Docker, see Troubleshooting SQL Server Docker containers.

Accedere ai file di logAccess the log files

I log del motore di SQL Server per il file /var/opt/mssql/log/errorlog nelle installazioni dei componenti di Linux e Docker.The SQL Server engine logs to the /var/opt/mssql/log/errorlog file in both the Linux and Docker installations. È necessario essere in modalità "superuser" per passare questa directory.You need to be in ‘superuser’ mode to browse this directory.

Il programma di installazione Registra qui: / var/rifiutare/mssql/installazione-< timestamp che rappresenta l'ora di installazione > è possibile esplorare i file di log degli errori con qualsiasi strumento compatibile UTF-16, ad esempio 'vim' o 'cat' simile al seguente: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

Se si preferisce, è anche possibile convertire i file in UTF-8 di leggerle con 'altro' o 'meno' con il comando seguente: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>

Eventi estesiExtended events

È possibile eseguire query di eventi estesi tramite un comando SQL.Extended events can be queried via a SQL command. Sono disponibili altre informazioni sugli eventi estesi qui:More information about extended events can be found here:

Dump di arresto anomalo del sistemaCrash dumps

Cercare i dump nella directory dei log in Linux.Look for dumps in the log directory in Linux. Controllare le impostazioni di directory /var/opt/mssql/log per i dump di Linux base (. estensione tar.gz2) o dei minidump SQL (con estensione con estensione mdmp)Check under the /var/opt/mssql/log directory for Linux Core dumps (.tar.gz2 extension) or SQL minidumps (.mdmp extension)

Per i Core dumpFor Core dumps

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

Per i dump di SQLFor SQL dumps

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

Avvio di SQL Server in una configurazione minima o in modalità utente singoloStart SQL Server in Minimal Configuration or in Single User Mode

Avviare SQL Server in modalità configurazione minimaStart SQL Server in Minimal Configuration Mode

È utile nel caso in cui l'impostazione di un valore di configurazione, ad esempio un'allocazione eccessiva di memoria, abbia impedito l'avvio del server.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

Avviare SQL Server in modalità utente singoloStart SQL Server in Single User Mode

In determinate circostanze, è possibile avviare un'istanza di SQL Server in modalità utente singolo usando l'opzione di avvio -m.Under certain circumstances, you may have to start an instance of SQL Server in single-user mode by using the startup option -m. Ad esempio, può risultare utile modificare le opzioni di configurazione del server oppure recuperare un database master o un altro database di sistema danneggiato.For example, you may want to change server configuration options or recover a damaged master database or other system database. Ad esempio, è possibile modificare le opzioni di configurazione di server o ripristinare un database master danneggiato o un altro database di sistemaFor example, you may want to change server configuration options or recover a damaged master database or other system database

Avviare SQL Server in modalità utente singoloStart SQL Server in Single User Mode

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

Avviare SQL Server in modalità utente singolo con SQLCMDStart SQL Server in Single User Mode with SQLCMD

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

Avviso

Avviare SQL Server in Linux con l'utente "mssql" per evitare problemi di avvio futuri.Start SQL Server on Linux with the "mssql" user to prevent future startup issues. Esempio "sudo -u mssql /opt/mssql/bin/sqlservr [STARTUP OPTIONS]"Example "sudo -u mssql /opt/mssql/bin/sqlservr [STARTUP OPTIONS]"

Se è stato avviato per errore SQL Server con un altro utente, è necessario modificare la proprietà del file di database di SQL Server all'utente 'mssql' prima dell'avvio di SQL Server con 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. Ad esempio, eseguire il comando seguente per modificare la proprietà di tutti i file di database in /var/opt/mssql per l'utente '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/

Ricompilare database di sistemaRebuild system databases

Come ultima risorsa, è possibile scegliere di rigenerare lo schema e i database modello eseguire il backup per le versioni predefinite.As a last resort, you can choose to rebuild the master and model databases back to default versions.

Avviso

Questi passaggi verranno eliminare tutti i dati di sistema di SQL Server configurato!These steps will DELETE all SQL Server system data that you have configured! Sono incluse informazioni sui database utente (ma non i database utente).This includes information about your user databases (but not the user databases themselves). Verranno eliminate anche altre informazioni archiviate nel database di sistema, inclusi i seguenti: informazioni di chiave master, tutti i certificati caricati nel master, la password di account di accesso SA, le informazioni relative ai processi da msdb, informazioni di posta elettronica database da msdb e opzioni di 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. Usare solo se si conoscono le implicazioni.Only use if you understand the implications!

  1. Arrestare SQL Server.Stop SQL Server.

    sudo systemctl stop mssql-server
    
  2. Eseguire sqlservr con il force-setup parametro.Run sqlservr with the force-setup parameter.

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

    Avviso

    Vedere l'avviso precedente.See the previous warning! Inoltre, è necessario eseguire questo elemento come il mssql utente, come illustrato di seguito.Also, you must run this as the mssql user as shown here.

  3. Dopo aver visualizzato il messaggio "Ripristino è stato completato", preme CTRL + C.After you see the message "Recovery is complete", press CTRL+C. Viene così arrestato SQL ServerThis will shut down SQL Server

  4. Riconfigurare le password dell'account SA.Reconfigure the SA password.

    sudo /opt/mssql/bin/mssql-conf set-sa-password
    
  5. Avvio di SQL Server e riconfigurare il server.Start SQL Server and reconfigure the server. Sono inclusi il ripristino o ricollegare tutti i database utente.This includes restoring or re-attaching any user databases.

    sudo systemctl start mssql-server
    

Problemi comuniCommon issues

  1. Non è possibile connettersi all'istanza di SQL Server remoto.You cannot connect to your remote SQL Server instance.

    Vedere la sezione dell'articolo sulla risoluzione dei problemi Connetti a SQL Server in Linux.See the troubleshooting section of the article, Connect to SQL Server on Linux.

  2. Errore: Nome host deve essere 15 caratteri o meno.ERROR: Hostname must be 15 characters or less.

    Si tratta di un problema noto che si verifica ogni volta che il nome del computer che sta provando a installare il pacchetto Debian di SQL Server è più lungo di 15 caratteri.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. Non esistono attualmente alcuna soluzione alternativa oltre alla modifica il nome del computer.There are currently no workarounds other than changing the name of the machine. Un modo per ottenere questo risultato è modificando il file di nome host e il riavvio del computer.One way to achieve this is by editing the hostname file and rebooting the machine. Quanto segue Guida di sito Web si illustra in dettaglio.The following website guide explains this in detail.

  3. La reimpostazione della password di amministrazione (SA) di sistema.Resetting the system administration (SA) password.

    Se si dimentica la password di amministratore (SA) di sistema o necessario eseguire questa operazione per altri motivi, seguire questa procedura.If you have forgotten the system administrator (SA) password or need to reset it for some other reason, follow these steps.

    Nota

    I passaggi seguenti arrestare temporaneamente il servizio SQL Server.The following steps stop the SQL Server service temporarily.

    Accedere al terminale host, eseguire i comandi seguenti e seguire le istruzioni per reimpostare la password dell'amministratore di sistema: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. Utilizzo di caratteri speciali nella password.Using special characters in password.

    Se si usano alcuni caratteri della password di account di accesso di SQL Server, è necessario utilizzare caratteri di escape con una barra rovesciata quando vengono usate in un comando nel terminale Linux.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. Ad esempio, è necessario racchiudere il segno di dollaro ($) ogni volta che si utilizzarlo in uno script shell dei comandi/terminale:For example, you must escape the dollar sign ($) anytime you use it in a terminal command/shell script:

    Non funziona:Does not work:

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

    Funzionamento:Works:

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

    Risorse: caratteri speciali EscapingResources: Special characters Escaping

info_tip SupportoGet Help