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 / 297506
Accepted
Koughdur
Koughdur
Asked: 2021-08-03 17:42:31 +0800 CST2021-08-03 17:42:31 +0800 CST 2021-08-03 17:42:31 +0800 CST

O computador remoto não pode se conectar à instância com barra invertida

  • 772

Estamos migrando duas instâncias do SQL Server 2008 em uma máquina Win7 para o SQL Server 2019 em um servidor Win10. O servidor antigo tinha duas instâncias: 123.123.123.123 e 123.123.123.123\ABC. Não tivemos problemas para conectar a ambas as instâncias de todos os nossos computadores em rede.

No novo servidor as instâncias são: CMP0123456 e CMP0123456\ABC. Podemos nos conectar à instância sem a barra, mas não podemos nos conectar à instância com a barra. O erro é SQL Error 17: Servidor não existe ou acesso negado.

O ping CMP0123456 funciona para computadores remotos.

Verifiquei se o gerenciador de configuração e os serviços do SQL Server e do SQL Server Agent estão em execução para ambas as instâncias. O navegador também está em execução. Ambas as instâncias usam os protocolos TCP/IP e de memória compartilhada. Pipes nomeados estão desabilitados.

Posso acessar ambas as instâncias por meio do SSMS local.

Eu não sou um DBA. Não configurei o servidor antigo ou o SQL Server 2008. Estou apenas vagamente familiarizado com problemas de rede. Verifiquei o firewall no novo servidor e ambas as portas 1433 e 1434 estão habilitadas/abertas. 1433 usa TCP e 1434 usa UDP.

Por alguma razão, o PolyBase tem as portas 1433 e 1434. Instalei o PolyBase, mas não acho que realmente precise dele. Se esse for o problema, existe uma maneira de associar as portas 1433 e 1434 diretamente ao SQL Server 2019?

Ou há alguma outra configuração no SQL Server e/ou no Firewall/Networking/DNS que preciso alterar para que os computadores remotos vejam a instância \ABC?

sql-server connectivity
  • 1 1 respostas
  • 240 Views

1 respostas

  • Voted
  1. Best Answer
    Dan Guzman
    2021-08-04T01:43:50+08:002021-08-04T01:43:50+08:00

    Cada instância do SQL Server escuta em uma porta diferente. Sua instância padrão está escutando na porta 1433, mas a instância nomeada deve escutar em uma porta diferente para evitar conflitos, que é atribuído dinamicamente por padrão.

    Certifique-se de que o firewall também permita conexões TCP para a porta da instância nomeada. O número da porta dinâmica pode ser identificado usando o SQL Server Configuration Manager (C:\Windows\System32\SQLServerManager15.msc) e também é registrado no log de erros do SQL Server na inicialização (por exemplo, "O servidor está escutando em ['qualquer' 12345]" ).

    Para evitar problemas de conectividade, caso o número da porta dinâmica da instância nomeada seja alterado, atribua um número de porta estático à instância nomeada (junto com a regra de firewall TCP) ou crie uma regra de firewall para o executável do aplicativo SQL Server da instância nomeada (por exemplo, C:\Program Files \Microsoft SQL Server\MSSQL15.ABC\MSSQL\Binn\sqlservr.exe").

    Execute os comandos do PowerShell abaixo em uma máquina remota para verificar a conectividade da porta TCP para cada instância.

    Test-NetConnection 123.123.123.123 -Port 1433 # default instance
    Test-NetConnection 123.123.123.123 -Port 12345 # specify named instance port number
    

    O SQL Server Browser é usado quando um nome de instância (em vez de um número de porta) é especificado na cadeia de conexão do cliente. A API do cliente envia uma solicitação UDP 1434 ao serviço do navegador, que retorna um datagrama que inclui o número da porta da instância nomeada atual para uso posterior. A implicação é que o serviço SQL Server Browser esteja em execução e o UDP 1434 permitido pelo firewall para se conectar a uma instância nomeada pelo nome.

    Infelizmente, não há um comando interno do PowerShell para testar a conectividade de porta UDP remota (pelo menos que eu saiba). Mas com a ajuda de objetos .NET, pode-se verificar a conectividade remota do SQL Server Browser com a ajuda deste script, que envia uma consulta de navegador UDP 1434 (engenharia reversa de um rastreamento de rede) para obter informações para a instância nomeada especificada.

    # verify UDP port 1434 connectivity and query SQL Server Browser for single instance
    
    $hostNameOrIpAddress = "CMP0123456"
    $instanceName = "ABC"
    
    try
    {
    
        Write-Host "Quering SQL Browser for host $hostNameOrIpAddress, instance $instanceName ..."
    
        $instanceNameBytes = [System.Text.Encoding]::ASCII.GetBytes($instanceName)
        $udpClient = New-Object Net.Sockets.UdpClient($hostNameOrIpAddress, 1434)
        $bufferLength = $InstanceNameBytes.Length + 2
        $browserQueryMessage = New-Object byte[] $bufferLength
        $browserQueryMessage[0] = 4
        $instanceNameBytes.CopyTo($browserQueryMessage, 1)
        $browserQueryMessage[$bufferLength-1] = 0
        $bytesSent = $udpClient.Send($browserQueryMessage, $browserQueryMessage.Length)
        $udpClient.Client.ReceiveTimeout = 10000
        $remoteEndPoint = New-Object System.Net.IPEndPoint([System.Net.IPAddress]::Broadcast, 0)
        $browserResponse = $udpClient.Receive([ref]$remoteEndPoint)
        Write-Host "SQL Server Browser response received" -ForegroundColor Green
        $payloadLength = $browserResponse.Length - 3
        $browserResponseString = [System.Text.ASCIIEncoding]::ASCII.GetString($browserResponse, 3, $payloadLength)
        Write-Host "SQL Server Browser raw datagram value: $browserResponseString"
        $elements = $browserResponseString.Split(";")
        $namedInstancePort = ""
        Write-Host  "SQL Server Browser parsed datagram:`r`n"
        for($i = 0; $i -lt $elements.Length; $i = $i + 2)
        {
            if ($elements[$i] -ne "")
            {
                Write-Host  "`t$($elements[$i])=$($elements[$i+1])"
                if($elements[$i] -eq "tcp")
                {
                    $namedInstancePort = $elements[$i+1]
                }
            }
        }
    
    }
    catch [Exception]
    {
        Write-Host "ERROR: $($_.Exception.Message)" -ForegroundColor Yellow
    }
    
    • 3

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