Solução de problemas do SQL Server em Linux
Aplica-se a: SQL Server – Linux
Este artigo descreve como solucionar problemas do SQL Server em execução no Linux ou em um contêiner do Linux. Ao solucionar problemas do SQL Server no Linux, lembre-se de examinar os recursos compatíveis e as limitações conhecidas:
- Notas sobre a versão do SQL Server 2022 em Linux
- Notas sobre a versão do SQL Server 2019 em Linux
- Notas sobre a versão do SQL Server 2017 em Linux
Para obter respostas a perguntas frequentes, confira as Perguntas frequentes sobre o SQL Server em Linux.
Solucionar falhas de conexão
Se você tiver dificuldades para se conectar à sua instância do SQL Server no Linux, há algumas coisas a serem verificadas.
Caso não consiga se conectar localmente usando
localhost
, tente usar o endereço IP 127.0.0.1. É possível que olocalhost
não esteja mapeado corretamente para esse endereço.Verifique se o nome do servidor ou o endereço IP pode ser acessado no computador cliente.
Para localizar o endereço IP de seu computador Ubuntu, execute o comando
ifconfig
como no seguinte exemplo:sudo ifconfig eth0 | grep 'inet addr'
Para o Red Hat, use o comando
ip addr
como no seguinte exemplo:sudo ip addr show eth0 | grep "inet"
Dica
Uma exceção a essa técnica está relacionada às VMs do Azure. Para VMs do Azure, localize o IP público da VM no portal do Azure.
Se aplicável, verifique se você abriu a porta do SQL Server (padrão 1433) no firewall.
Para VMs do Azure, verifique se você tem uma regra de grupo de segurança de rede para a porta padrão do SQL Server.
Verifique se o nome de usuário e a senha não contêm erros de digitação, espaços extras ou uso incorreto de maiúsculas.
Tente definir explicitamente o protocolo e o número da porta com o nome do servidor, como no seguinte exemplo:
tcp:servername,1433
.Problemas de conectividade de rede também podem causar erros de conexão e tempos limite. Depois de verificar as informações de conexão e a conectividade de rede, tente estabelecer a conexão novamente.
Gerenciar o serviço SQL Server
A seção a seguir mostra como gerenciar a execução de contêineres Linux do SQL Server. Para gerenciar serviços para Linux, confira Iniciar, parar e reiniciar serviços do SQL Server no Linux.
Gerenciar a execução do contêiner Linux do SQL Server
Obtenha o status e a ID do contêiner Linux do SQL Server criado mais recentemente executando o seguinte comando (a ID está abaixo da coluna CONTAINER ID
):
sudo docker ps -l
Você pode parar ou reiniciar o serviço SQL Server, conforme necessário, usando os seguintes comandos:
sudo docker stop <container ID>
sudo docker restart <container ID>
Dica
Para obter mais dicas de solução de problemas para contêineres Linux, confira Solução de problemas de contêineres do SQL Server no Docker.
Acessar os arquivos de log
O Mecanismo de Banco de Dados do SQL Server registra no arquivo /var/opt/mssql/log/errorlog
nas instalações do Linux e do contêiner. Você precisa estar no modo superusuário para procurar arquivos nesse diretório.
O instalador registra-os em log aqui: /var/opt/mssql/setup-<time stamp representing time of install>
Você pode procurar os arquivos errorlog
com qualquer ferramenta compatível com UTF-16, como vim ou cat da seguinte maneira:
sudo cat errorlog
Se preferir, converta também os arquivos em UTF-8 para lê-los com more ou less com o seguinte comando:
sudo iconv -f UTF-16LE -t UTF-8 <errorlog> -o <output errorlog file>
Eventos estendidos
Os eventos estendidos podem ser consultados por meio de um comando SQL. Para obter mais informações, confira eventos estendidos.
Despejos de memória
Procure despejos no diretório de log do Linux. Verifique no diretório /var/opt/mssql/log
os despejos do Linux Core (extensão .tar.gz2
) ou minidespejos do SQL (extensão .mdmp
).
Por exemplo, para exibir os principais despejos:
sudo ls /var/opt/mssql/log | grep .tar.gz2
Para despejos do SQL, use este script:
sudo ls /var/opt/mssql/log | grep .mdmp
Iniciar o SQL Server no modo de usuário único ou de configuração mínima
Iniciar o SQL Server no modo de configuração mínima
Esse modo será útil se a definição de um valor de configuração (por exemplo, sobrecarga de confirmação de memória) impediu o servidor de ser iniciado.
sudo -u mssql /opt/mssql/bin/sqlservr -f
Iniciar o SQL Server no modo de usuário único
Às vezes, pode ser necessário iniciar uma instância do SQL Server no modo de usuário único usando a opção de inicialização -m
. Para obter mais informações, confira Parâmetros de inicialização. Por exemplo, você pode querer mudar as opções de configuração de servidor ou recuperar um banco de dados master
danificado ou outro banco de dados do sistema.
Por exemplo, use o seguinte script para iniciar o SQL Server no modo de usuário único:
sudo -u mssql /opt/mssql/bin/sqlservr -m
Este script inicia o SQL Server no modo de usuário único com o sqlcmd:
sudo -u mssql /opt/mssql/bin/sqlservr -m sqlcmd
Sempre inicie o SQL Server no Linux com o usuário mssql
para evitar futuros problemas de inicialização. Por exemplo: sudo -u mssql /opt/mssql/bin/sqlservr [STARTUP OPTIONS]
Se você tiver iniciado o SQL Server acidentalmente com outro usuário, altere a propriedade dos arquivos de banco de dados do SQL Server novamente para o usuário mssql
antes de iniciar o SQL Server com systemd. Por exemplo, para alterar a propriedade de todos os arquivos de banco de dados em /var/opt/mssql
para o usuário mssql
, execute o comando a seguir:
chown -R mssql:mssql /var/opt/mssql/
Recompilar bancos de dados do sistema
Como último recurso, você pode optar por recompilar os bancos de dados master
e model
novamente para as versões padrão.
Aviso
Esse processo é perigoso, pois você poderá excluir todos os dados do sistema do SQL Server que você configurou, incluindo informações sobre seus bancos de dado de usuário (mas não os bancos de dados do usuário em si).
Posteriormente, você precisará anexar os bancos de dados de usuário à instância. Isso também excluirá outras informações armazenadas nos bancos de dados do sistema, inclusive:
- Informações de chave mestra do banco de dados (DMK)
- todos os certificados carregados em
master
- a senha para o logon do SA
- informações relacionadas ao trabalho de
msdb
- informações de Database Mail do
msdb
sp_configure
options
Você não poderá anexar novamente nenhum banco de dados de usuário criptografado com Transparent Data Encryption (TDE), a menos que também seja feito backup de seus certificados e chaves privadas.
Use essas etapas apenas se você entender as implicações.
Parar o Mecanismo de Banco de Dados do SQL Server
sudo systemctl stop mssql-server
Executar sqlservr com o parâmetro
force-setup
sudo -u mssql /opt/mssql/bin/sqlservr --force-setup
Sempre inicie o SQL Server no Linux com o usuário
mssql
para evitar futuros problemas de inicialização.Depois de ver a mensagem "A recuperação foi concluída", pressione Ctrl+C. Isso desligará o SQL Server.
Reconfigure a senha SA.
sudo /opt/mssql/bin/mssql-conf set-sa-password
Inicie o SQL Server e reconfigure o servidor, incluindo a restauração ou reanexação de qualquer banco de dados de usuário.
sudo systemctl start mssql-server
Melhorar o desempenho
Muitos fatores afetam o desempenho, incluindo design de banco de dados, hardware e demandas de carga de trabalho. Se desejar melhorar o desempenho, comece examinando as melhores práticas no artigo Melhores práticas de desempenho e diretrizes de configuração para o SQL Server em Linux. Em seguida, explore algumas das ferramentas disponíveis para solucionar problemas de desempenho.
- Monitorar o desempenho usando o Repositório de Consultas
- Exibições de gerenciamento dinâmico do sistema
- Painel de desempenho no SQL Server Management Studio
Problemas comuns
Não é possível se conectar à Instância remota do SQL Server.
Confira a seção de solução de problemas do artigo Conectar-se ao SQL Server em Linux.
A seguinte mensagem de erro é exibida:
ERROR: Hostname must be 15 characters or less.
Esse é um problema conhecido que ocorre sempre que o nome do computador que está tentando instalar o pacote do SQL Server tem mais de 15 caracteres. Atualmente, não há soluções alternativas além da alteração do nome do computador. Você pode fazer isso editando
/etc/hostname
e/etc/hosts
, alterando o nome do host, salvando cada arquivo e reiniciando o computador.A senha de administração do sistema (SA) deve ser redefinida, o que vai parar o serviço SQL Server temporariamente.
Se você esquecer a senha de SA (administrador do sistema) ou precisa redefini-la por algum outro motivo, siga estas etapas.
Conecte-se ao terminal do host, execute os seguintes comandos e siga os prompts para redefinir a senha SA:
sudo systemctl stop mssql-server sudo /opt/mssql/bin/mssql-conf setup
Caracteres especiais em senhas de logon causam erros ou falhas de logon.
Se você usar alguns caracteres na senha de logon do SQL Server, talvez precise fazer escape deles com uma barra invertida quando usá-los na linha de comando do Linux. Por exemplo, você precisará fazer escape do cifrão ($) sempre que usá-lo em um script de shell/comando de terminal:
Não funciona:
sudo sqlcmd -S myserver -U sa -P Test$$
Funciona:
sqlcmd -S myserver -U sa -P Test\$\$
Conteúdo relacionado
Obter ajuda
- Ideias para SQL: Tem sugestões para melhorar o SQL Server?
- Microsoft Q&A (SQL Server)
- DBA Stack Exchange (marcação sql-server): Fazer perguntas sobre o SQL Server
- Stack Overflow (marcação sql-server): respostas a perguntas sobre desenvolvimento de SQL
- Reddit: discussão geral sobre o SQL Server
- Informações e termos de licença do Microsoft SQL Server
- Opções de suporte para usuários empresariais
- Ajuda e comentários adicionais sobre o SQL Server
Contribua com a documentação do SQL
Você sabia que pode editar conteúdo do SQL por conta própria? Ao fazer isso, além de melhorar nossa documentação, você também será creditado como um colaborador da página.
Para obter mais informações, confira Como contribuir para a documentação do SQL Server