AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 185045
Accepted
Solomon Rutzky
Solomon Rutzky
Asked: 2017-09-05 13:37:37 +0800 CST2017-09-05 13:37:37 +0800 CST 2017-09-05 13:37:37 +0800 CST

SQL Server no Linux trava na inicialização inicial, sem erros e sem arquivo ErrorLog novo/atualizado

  • 772

Estou usando o SQL Server 2017, Release Candidate 2 (RC2) no Linux (Ubuntu 16.04).

Quando o servidor é inicializado, o SQL Server geralmente também é iniciado. Mas, por algum motivo, o SQL Server não inicia mais. Pelo menos não consigo me conectar a ele usando sqlcmd . Eu recebo um erro de tempo limite de ODBC ( "Sqlcmd: Error: Microsoft ODBC Driver 13 for SQL Server ") todas as vezes agora:

Login timeout expired.  
TCP Provider: Error code 0x2749.  
A network-related or instance-specific error has occurred while establishing a
connection to SQL Server. Server is not found or not accessible. Check if instance
name is correct and if SQL Server is configured to allow remote connections.
For more information see SQL Server Books Online..

No entanto, quando eu executo:

ps aux | grep mssql

Recebo duas entradas retornadas mostrando que o mssqlusuário está executando o sqlservrprocesso.

Além disso, o arquivo de log de erros em /var/opt/mssql/log/ não tem um carimbo de data/hora correspondente quando iniciei a VM (ou reiniciei o serviço), nem há novas entradas nesse arquivo.

E, em /var/log/messages , tudo o que aparece é:

Esta é uma versão de avaliação. Faltam [141] dias no período de avaliação.

Se eu executar systemctl status mssql-server, recebo o seguinte:

● mssql-server.service - Mecanismo de banco de dados do Microsoft SQL Server
Carregado: carregado (/lib/systemd/system/mssql-server.service; ativado; predefinição do fornecedor: ativado)
Ativo: falhou (Resultado: código de saída) desde segunda-feira de 2017- 09-04 20:01:56 BST; 36s atrás
Documentos: https://learn.microsoft.com/en-us/sql/linux
Processo: 8009 ExecStart=/opt/mssql/bin/sqlservr (code=exited, status=255)
PID principal: 8009 (code= saiu, status=255)

Started Microsoft SQL Server Database Engine.  
This is an evaluation version.  There are [141] days left in the evaluation period.  
Stopping Microsoft SQL Server Database Engine...  
mssql-server.service: Main process exited, code=exited, status=255/n/a  
Stopped Microsoft SQL Server Database Engine.  
mssql-server.service: Unit entered failed state.  
mssql-server.service: Failed with result 'exit-code'.  
sql-server linux
  • 4 4 respostas
  • 5210 Views

4 respostas

  • Voted
  1. Best Answer
    Solomon Rutzky
    2017-09-05T13:37:37+08:002017-09-05T13:37:37+08:00

    Isso acabou como um caso de não ter cuidado ao trabalhar como root.

    Eu estava pesquisando se o SQLCLR no Linux teria acesso ao arquivo app.Config como no Windows (infelizmente, não: SQL Server 2017 no Linux ignora o arquivo de configuração do aplicativo, se existir, ou às vezes trava se não existir 't (SQLCLR) ) e, em determinadas circunstâncias, o SQL Server travaria completamente. Quando isso acontecia, a única maneira de pará-lo era fazer um kill -9on sqlservr. Uma das vezes que eu estava iniciando o serviço novamente, fiz isso executando diretamente /opt/mssql/bin/sqlservr e enquanto estava trabalhando como root(portanto, o próprio processo era de propriedade de root).

    Não houve erros imediatos ou comportamento estranho resultante da execução sqlservrcomo root, MAS quando a VM foi reiniciada e o SQL Server tentou iniciar corretamente (ou seja, executando como o mssqlusuário), foi quando ele ficou preso no início.

    Descobri que uma consequência direta da execução sqlservrcomo rootera que o arquivo /var/opt/mssql/log/errorlog (e alguns outros que são criados na inicialização do SQL Server) eram de propriedade root(faz sentido).

    E, uma consequência direta desses arquivos serem de propriedade rooté que quando o processo é iniciado corretamente (como mssql), então o mssqlusuário não tem permissão para renomear o arquivo para terminar em .1 (e o que mais precisa acontecer com qualquer outro arquivos, como rastreamento padrão, etc). No entanto, em vez de obter um erro de permissão, ele trava para sempre.

    A correção principal é simplesmente executar o seguinte como root(não tentei executá-lo como mssql). Para ambos os comandos a seguir, sudoé necessário apenas quando não estiver atuando como rootele executará o comando que o segue como root (ou algum outro usuário, se você especificar -u username), após ser solicitado a inserir a rootsenha.

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

    A correção secundária (para garantir que isso não aconteça novamente) é iniciar o SQL Server corretamente ;-):

    sudo systemctl start mssql-server
    
    • 15
  2. Evan Carroll
    2018-01-05T22:47:41+08:002018-01-05T22:47:41+08:00

    Para obter as permissões corretas e obter erros inteligentes, você precisa pelo menos do seguinte...

    # make sure needed directories exist
    sudo mkdir /var/opt/mssql /var/opt/mssql/.system /var/opt/mssql/data /var/opt/mssql/log
    
    # this should be owned by mssql
    sudo chown -R  mssql:mssql /var/opt/mssql
    sudo chmod 770 /var/opt/mssql
    
    # this should be owned by root
    sudo chown -R root:root /opt/mssql
    
    • 1
  3. user210791
    2020-06-17T08:19:38+08:002020-06-17T08:19:38+08:00

    Eu acho que a permissão em um arquivo está errada.

    Tente fazer isso:

    sudo chmod -x /usr/lib/systemd/system/mssql-server.service
    
    • 0
  4. Zlatan
    2021-04-06T04:23:30+08:002021-04-06T04:23:30+08:00

    Por favor, verifique isso também.

    Não se esqueça da .systempasta oculta em /var/opt/mssql/.

    https://designprincipia.com/i-broke-mssql-server-on-linux

    • 0

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve