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 / 305098
Accepted
John K. N.
John K. N.
Asked: 2021-12-18 00:51:54 +0800 CST2021-12-18 00:51:54 +0800 CST 2021-12-18 00:51:54 +0800 CST

Configuração de IP de várias instâncias do SQL Server - o serviço não inicia

  • 772

Eu encontrei um problema ao configurar um SQL Server de várias instâncias ao atribuir um endereço IP específico à primeira instância.

Configuração de IP Dedicado

As etapas que executo para configurar uma única instância para um endereço IP dedicado são:

  1. Abra o SQL Server Configuration Manager (SSCM)

  2. Navegue para baixo na árvore para:

    SQL Server Configuration Manager (local)
    +-- SQL Server Network Configuration
        +-- Protocols for <INSTANCENAME>
    
  3. No painel direito, clico duas vezes em TCP/IP que abre as Propriedades de TCP/IP na guia Protocolo

  4. Em seguida, asseguro-me de que Enabled esteja definido como yes e a opção Listen All esteja definida como No .

  5. Eu troco as guias para os endereços IP e asseguro que

    • Enabled está definido como Não para todos os endereços IPv4 e IPv6, exceto para o endereço IP que desejo atribuir a esta instância. Para este endereço IP, defino a configuração como Sim .
    • As portas dinâmicas TCP estão vazias para todos os endereços IP.
    • Para o endereço IP que desejo atribuir a esta instância, atribuo a porta TCP 1433 .
  6. Em seguida, fecho todas as janelas e o SSCM exibe a mensagem padrão:

    ---------------------------
    Warning
    ---------------------------
    Any changes made will be saved; however, they will not take 
    effect until the service is stopped and restarted.
    ---------------------------
    OK   
    ---------------------------
    
  7. Eu reinicio a instância específica e geralmente permite conexões com minha instância por meio do endereço IP dedicado.

  8. Eu testo se a instância está escutando no endereço IP e na porta fornecidos com:

    c:\> netstat -abon
    
    TCP    10.58.212.112:1433     0.0.0.0:0              LISTENING         2172
    [sqlservr.exe]
    

Os resultados acima são de um servidor em funcionamento

Até agora tudo bem. Já fiz isso pela enésima vez e nunca tive problemas.

Caso

Dois dias atrás, o serviço do SQL Server para uma instância recém-configurada em um servidor de teste não iniciaria após a configuração do endereço 10.58.194.5 para a instância. Eu tentei as seguintes etapas para corrigir a instância de teste "quebrada" :

  1. Reparar ferramentas compartilhadas
  2. Reparar instância
  3. Desinstalar e reinstalar o SQL Server
  4. Execute um ProcMon para descobrir onde as coisas foram quebradas.

Mas nada ajudou até agora.

A saída relevante do arquivo ERRORLOG é a seguinte:

2021-12-17 08:00:03.76 spid17s     Error: 26024, Severity: 16, State: 1.
2021-12-17 08:00:03.76 spid17s     Server failed to listen on 10.58.194.5 <ipv4> 1433. Error: 0x2741. 
                                   To proceed, notify your system administrator.
2021-12-17 08:00:03.76 spid17s     Error: 17182, Severity: 16, State: 1.
2021-12-17 08:00:03.76 spid17s     TDSSNIClient initialization failed with error 0x2741, status code 0xa. 
                                   Reason: Unable to initialize the TCP/IP listener. 
2021-12-17 08:00:03.76 spid17s     Error: 17182, Severity: 16, State: 1.
2021-12-17 08:00:03.76 spid17s     TDSSNIClient initialization failed with error 0x2741, status code 0x1. 
                                   Reason: Initialization failed with an infrastructure error. Check for previous errors. 
2021-12-17 08:00:03.76 spid17s     Error: 17826, Severity: 18, State: 3.
2021-12-17 08:00:03.76 spid17s     Could not start the network library because of an internal error in the network library. 
                                   To determine the cause, review the errors immediately preceding this one in the error log.
2021-12-17 08:00:03.76 spid17s     Error: 17120, Severity: 16, State: 1.
2021-12-17 08:00:03.76 spid17s     SQL Server could not spawn FRunCommunicationsManager thread. 
                                   Check the SQL Server error log and the operating system error log for information about possible related problems.

Esta é a primeira vez que não consigo configurar/definir uma instância do SQL Server para um endereço IP específico.

Entradas de registro de eventos

Os seguintes erros são registrados no log de eventos do aplicativo do Windows ao tentar iniciar o serviço (o mais recente primeiro):

Level | Date / Time         | Source               | Event ID
Error | 17.12.2021 11:00:45 | MSSQL$<INSTANCENAME> | 17120
Error | 17.12.2021 11:00:45 | MSSQL$<INSTANCENAME> | 17826
Error | 17.12.2021 11:00:45 | MSSQL$<INSTANCENAME> | 17182
Error | 17.12.2021 11:00:45 | MSSQL$<INSTANCENAME> | 17182
Error | 17.12.2021 11:00:45 | MSSQL$<INSTANCENAME> | 26024

Essas identificações de eventos se assemelham às informações do ERRORLOG.

A entrada adicional no log de eventos do sistema é:

Level | Date / Time         | Source                  | Event ID
Error | 17.12.2021 11:00:45 | Service Control Manager | 7024 

Os detalhes sendo:

The service "SQL Server (<INSTANCENAME>)" has been stopped with the following error: 
The requested address is invalid in this context.

Os detalhes do XML são:

- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
  <Provider Name="Service Control Manager" Guid="{555908d1-a6d7-4695-8e1e-26931d2012f4}" EventSourceName="Service Control Manager" /> 
  <EventID Qualifiers="49152">7024</EventID> 
  <Version>0</Version> 
  <Level>2</Level> 
  <Task>0</Task> 
  <Opcode>0</Opcode> 
  <Keywords>0x8080000000000000</Keywords> 
  <TimeCreated SystemTime="2021-12-17T10:00:45.876740800Z" /> 
  <EventRecordID>15418</EventRecordID> 
  <Correlation /> 
  <Execution ProcessID="736" ThreadID="372" /> 
  <Channel>System</Channel> 
  <Computer>SERVER.DOMAIN.TLD</Computer> 
  <Security /> 
  </System>
- <EventData>
  <Data Name="param1">SQL Server (<INSTANCENAME>)</Data> 
  <Data Name="param2">%%10049</Data> 
  <Binary>4D005300530051004C00240041004C004C00470045004D00450049004E000000</Binary> 
  </EventData>
  </Event>

Configuração da placa de interface de rede

Há apenas uma NIC configurada no servidor de teste . E é virtual. O nome é Ethernet0 e o tipo é Adaptador Ethernet para vmxnet3 .

A rede está configurada da seguinte forma:

IP address:        10.58.194.4
Subnet mask:       255.255.255.192
Standard gateway:  10.58.194.2

Os endereços IP adicionais que estamos usando para as instâncias do SQL Server são:

10.58.194.5 / 255.255.255.192
10.58.194.6 / 255.255.255.192
10.58.194.7 / 255.255.255.192
10.58.194.28 / 255.255.255.192
10.58.194.29 / 255.255.255.192

A única NIC está configurada para aceitar conexões para os seis endereços IP.

Pergunta

Alguém tem alguma ideia de como posso resolver este problema?


Informações Adicionais via Comentários

Se eu definir a opção Listen All como Yes na configuração TCP/IP, a instância será iniciada. Mas não é isso que procuro. Não consigo me conectar à instância usando o alias ou o endereço IP. O processo sqlserver.exe não está mais escutando na porta 1433.

Depois de contemplar minha observação de que o processo sqlserver.exe não está mais ouvindo na porta 1433 , parece que o servidor não consegue vincular o endereço IP à porta 1433 para minha primeira instância.

Depois de configurar Listen All para yes e o endereço IP para ter port 1433, então sqlserver.exenão escuta em nenhum endereço IP ( 0.0.0.0) para port 1433. É como se a configuração da caixa de entrada para o número da porta estivesse corrompida. O SQL Server ERRORLOG exibe:

2021-12-17 16:27:36.35 spid17s     Error: 26058, Severity: 16, State: 1.   
2021-12-17 16:27:36.35 spid17s     A TCP provider is enabled, but there are no TCP listening ports configured. 
                                   The server cannot accept TCP connections.`

Notas Laterais

Consegui configurar e configurar um servidor produtivo , que recebi no mesmo dia, para usar um IP específico sem problemas. A única diferença foi talvez que os seis endereços IP que recebi para o servidor produtivo , estavam em ordem sequencial assim:

10.xx.xxx.111 / 255.255.255.0 -- server
10.xx.xxx.112 / 255.255.255.0 -- instance_1
10.xx.xxx.113 / 255.255.255.0 -- instance_2
10.xx.xxx.114 / 255.255.255.0 --...
10.xx.xxx.115 / 255.255.255.0
10.xx.xxx.116 / 255.255.255.0
sql-server sql-server-2019
  • 1 1 respostas
  • 419 Views

1 respostas

  • Voted
  1. Best Answer
    John K. N.
    2021-12-23T23:22:17+08:002021-12-23T23:22:17+08:00

    Estou documentando a resposta para fornecer a outras pessoas maneiras de descobrir por que um endereço IP pode estar causando um problema ao configurar um endereço IP para uma instância individual do SQL Server.

    Os seguintes endereços IP foram os IPs que foram atribuídos à NIC no servidor e ao próprio servidor:

    IP address:        10.58.194.4       (server)
    Subnet mask:       255.255.255.192
    Standard gateway:  10.58.194.2
    IP address:        10.58.194.5       (instance 1)
    IP address:        10.58.194.6       (instance 2)
    IP address:        10.58.194.7       (instance 3)
    IP address:        10.58.194.28      (instance 4)
    IP address:        10.58.194.29      (instance 5)
    

    A seguir está uma seção do intervalo de IP e para que eles foram realmente usados ​​do ponto de vista da rede:

    IP address:        10.58.194.0       (reserved; don't use)
    IP address:        10.58.194.1       (reserved; don't use)
    IP address:        10.58.194.2       (virtual Gateway)
    IP address:        10.58.194.3       (reserved; don't use)
    IP address:        10.58.194.4       (Actual Gateway Data Centre 1)
    IP address:        10.58.194.5       (Actual Gateway Data Centre 2)
    IP address:        10.58.194.6       (reserved; don't use)
    IP address:        10.58.194.7       (reserved; don't use)
    

    Como você pode ver, o endereço IP do servidor corresponde ao endereço IP do Data Center de Gateway Real 1 . E o endereço IP que havia sido reservado para a primeira instância do SQL Server era o endereço IP do Actual Gateway Data Center 2 .

    O que tinha acontecido?

    Durante a configuração inicial do servidor os endereços IP estavam parcialmente em uso pelos técnicos de rede. Como o gateway físico atual para o servidor estava sendo executado no 10.58.194.5servidor, ele pôde ser configurado para ser executado e iniciado no 10.58.194.4.

    A configuração dos endereços IP adicionais na NIC não foi um problema, porque inicialmente é apenas uma entrada no registro. O servidor foi então entregue à equipe de DBA.

    Aí veio o cara DBA (eu) e tentou configurar uma nova instância do SQL Server no endereço IP do Data Center de Gateway Real 2 . Como esse endereço estava realmente em uso como o gateway atual do Windows Server, a instância do SQL Server não pôde ser iniciada.

    Dica 1

    A execução de um ipconfigmostrou os endereços IP reais que estavam ativos no servidor:

    Ethernet-Adapter Ethernet0:
    
       Verbindungsspezifisches DNS-Suffix: 
       Verbindungslokale IPv6-Adresse  . : 
       IPv4-Adresse  . . . . . . . . . . : 10.58.194.4
       Subnetzmaske  . . . . . . . . . . : 255.255.255.192
       IPv4-Adresse  . . . . . . . . . . : 10.58.194.7
       Subnetzmaske  . . . . . . . . . . : 255.255.255.192
       IPv4-Adresse  . . . . . . . . . . : 10.58.194.28
       Subnetzmaske  . . . . . . . . . . : 255.255.255.192
       IPv4-Adresse  . . . . . . . . . . : 10.58.194.29
       Subnetzmaske  . . . . . . . . . . : 255.255.255.192
       Standardgateway . . . . . . . . . : 10.58.194.2
    

    Isso nos mostrou que ...194.5não ...194.6estavam disponíveis para o servidor/instância, embora tivessem sido configurados para a NIC.

    Dica 2

    A execução de um tracertpara um servidor diferente em um intervalo de IP diferente teria mostrado igualmente que o endereço IP 10.58.194.5estava em uso como o gateway atual para o servidor.

    Solução

    A solução para nosso problema foi mover o servidor para um intervalo de IP diferente e documentar que os primeiros sete endereços IP de um intervalo são reservados para os técnicos de rede.

    • 2

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