Udostępnij za pośrednictwem


Jak sprawdzić, czy program SQL Server nasłuchuje na porcie dynamicznym lub na porcie statycznym

W tym artykule omówiono sposób określania, czy nazwane wystąpienie programu Microsoft SQL Server nasłuchuje na porcie dynamicznym a port statyczny. Te informacje mogą być przydatne podczas rozwiązywania różnych problemów z połączeniem związanych z programem SQL Server.

Domyślnie wystąpienie nazwane programu SQL Server jest skonfigurowane do nasłuchiwania na portach dynamicznych. Pobiera dostępny port z systemu operacyjnego. Można również skonfigurować wystąpienia nazwane programu SQL Server do uruchamiania na określonym porcie. Jest to nazywane portem statycznym. Aby uzyskać więcej informacji na temat portów statycznych i dynamicznych w kontekście programu SQL Server, zobacz Statyczne i dynamiczne porty.

Poniższa procedura umożliwia określenie, czy wystąpienie nazwane programu SQL Server nasłuchuje na porcie dynamicznym, a port statyczny.

Opcja 1. Korzystanie z programu SQL Server Configuration Manager

  1. W menedżerze konfiguracji programu SQL Server rozwiń węzeł Konfiguracja sieci programu SQL Server, rozwiń węzeł Protokoły dla nazwy wystąpienia, a następnie kliknij dwukrotnie protokół TCP/IP.

  2. W obszarze Właściwości protokołu TCP/IP wybierz pozycję Protokół.

  3. Sprawdź wartość w ustawieniu Nasłuchiwanie wszystkich . Jeśli jest ustawiona wartość Tak, przejdź do kroku 4. Jeśli jest ustawiona wartość Nie, przejdź do kroku 6.

  4. Przejdź do pozycji Adresy IP i przewiń do dołu strony Właściwości protokołu TCP/IP.

  5. Sprawdź wartości we wszystkich adresach IP i użyj poniższej tabeli, aby określić, czy nazwane wystąpienie nasłuchuje na porcie dynamicznym, czy statycznym.

    Porty dynamiczne TCP Port TCP Wystąpienie programu SQL Server korzystające z portów dynamicznych lub statycznych?
    Pusta Pusta Porty dynamiczne
    <Number> Pusta Porty dynamiczne — <Number> czy port dynamiczny, na który obecnie nasłuchuje program SQL Server
    <Number1> <Number2> Równoczesne nasłuchiwanie na porcie <Number1> dynamicznym i porcie statycznym <Number2>
  6. Przełącz się na adresy IP. Zwróć uwagę, że kilka adresów IP jest wyświetlanych w formacie IP1, IP2, aż do adresu IP Wszystkie. Jeden z tych adresów IP jest przeznaczony dla adaptera sprzężenia zwrotnego, 127.0.0.1. Zostanie wyświetlonych więcej adresów IP dla każdego adresu IP na komputerze. (Prawdopodobnie zobaczysz adresy IP4 i IP6). Aby sprawdzić, czy określony adres IP jest skonfigurowany dla portu dynamicznego i statycznego, użyj poniższej tabeli.

    Porty dynamiczne TCP Port TCP Wystąpienie programu SQL Server korzystające z portów dynamicznych lub statycznych?
    Pusta Pusta Porty dynamiczne
    <Number> Pusta Porty dynamiczne — <Number> to port dynamiczny, na który obecnie nasłuchuje program SQL Server.
    <Number1> <Number2> Równoczesne nasłuchiwanie na porcie <Number1> dynamicznym i porcie statycznym <Number2>

Uwaga 16.

Wartość 0 w portach dynamicznych TCP wskazuje, że nazwane wystąpienie nie jest obecnie uruchomione i jest skonfigurowane dla portów dynamicznych. Po uruchomieniu wystąpienia pole wartości będzie odzwierciedlać port dynamiczny używany obecnie przez wystąpienie.

Opcja 2. Korzystanie z programu PowerShell

  1. Uruchom następujący skrypt w środowisku PowerShell ISE. W oknie Konsoli są wyświetlane wszystkie odpowiednie protokoły TCP/IP dla wszystkich wystąpień programu SQL Server (SQL Server 2014 do programu SQL Server 2019), które są obecnie zainstalowane w systemie.

    clear
    Write-Host "SQL Server 2019"
    Write-Host "====================="
    Get-ItemProperty  -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.*\MSSQLServer\SuperSocketNetLib\Tcp" | Select-Object -Property Enabled, KeepAlive, ListenOnAllIps,@{label='ServerInstance';expression={$_.PSPath.Substring(74)}} |Format-Table -AutoSize
    Get-ItemProperty  -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL15.*\MSSQLServer\SuperSocketNetLib\Tcp\IP*\" | Select-Object -Property TcpDynamicPorts,TcpPort,DisplayName, @{label='ServerInstance_and_IP';expression={$_.PSPath.Substring(74)}}, IpAddress |Format-Table -AutoSize
    
    Write-Host "SQL Server 2017"
    Write-Host "====================="
    Get-ItemProperty  -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL14.*\MSSQLServer\SuperSocketNetLib\Tcp" | Select-Object -Property Enabled, KeepAlive, ListenOnAllIps,@{label='ServerInstance';expression={$_.PSPath.Substring(74)}} |Format-Table -AutoSize
    Get-ItemProperty  -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL14.*\MSSQLServer\SuperSocketNetLib\Tcp\IP*\" | Select-Object -Property  TcpDynamicPorts,TcpPort, DisplayName, @{label='ServerInstance_and_IP';expression={$_.PSPath.Substring(74)}}, IpAddress |Format-Table -AutoSize
    
    Write-Host "SQL Server 2016"
    Write-Host "====================="
    Get-ItemProperty  -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13.*\MSSQLServer\SuperSocketNetLib\Tcp" | Select-Object -Property Enabled, KeepAlive, ListenOnAllIps,@{label='ServerInstance';expression={$_.PSPath.Substring(74)}} |Format-Table -AutoSize
    Get-ItemProperty  -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL13.*\MSSQLServer\SuperSocketNetLib\Tcp\IP*\" | Select-Object -Property  TcpDynamicPorts,TcpPort, DisplayName, @{label='ServerInstance_and_IP';expression={$_.PSPath.Substring(74)}}, IpAddress |Format-Table -AutoSize
    
    Write-Host "SQL Server 2014"
    Write-Host "====================="
    Get-ItemProperty  -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.*\MSSQLServer\SuperSocketNetLib\Tcp" | Select-Object -Property Enabled, KeepAlive, ListenOnAllIps,@{label='ServerInstance';expression={$_.PSPath.Substring(74)}} |Format-Table -AutoSize
    Get-ItemProperty  -Path "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL12.*\MSSQLServer\SuperSocketNetLib\Tcp\IP*\" | Select-Object -Property  TcpDynamicPorts,TcpPort, DisplayName, @{label='ServerInstance_and_IP';expression={$_.PSPath.Substring(74)}}, IpAddress |Format-Table -AutoSize
    
  2. W danych wyjściowych sprawdź wartość w kolumnie ListenOnAllIPs dla wystąpienia programu SQL Server (zapoznaj się z odpowiednią wartością w kodzie ServerInstance dla tego wiersza). Jeśli wartość jest ustawiona na 1, przejdź do kroku 3. Jeśli ustawiono wartość 0, przejdź do kroku 4.

  3. Przeskanuj dane wyjściowe dla wiersza zawierającego wpis Dowolny adres IP w kolumnie DisplayName dla danego wystąpienia lub sprawdź wartości TcpDynamicPorts i TcpPort dla wiersza. Następnie użyj poniższej tabeli, aby określić, czy nazwane wystąpienie nasłuchuje na porcie dynamicznym, czy statycznym.

    Porty dynamiczne TCP Port TCP Wystąpienie programu SQL Server korzystające z portów dynamicznych lub statycznych?
    Pusta Pusta Porty dynamiczne
    <Number> Pusta Porty dynamiczne — <Number> czy port dynamiczny SQL nasłuchuje obecnie
    <Number1> <Number2> Równoczesne nasłuchiwanie na porcie <Number1> dynamicznym i porcie statycznym <Number2>
  4. Zwróć uwagę, że kilka adresów IP jest wyświetlanych w formacie IP1, IP2, aż do adresu IP Wszystkie. Jeden z tych adresów IP jest przeznaczony dla adaptera sprzężenia zwrotnego, 127.0.0.1. Zostanie wyświetlonych więcej adresów IP dla każdego adresu IP na komputerze. (Prawdopodobnie zobaczysz adresy IP4 i IP6). Aby sprawdzić, czy określony adres IP jest skonfigurowany dla portu dynamicznego i statycznego, użyj poniższej tabeli.

    Porty dynamiczne TCP Port TCP Wystąpienie programu SQL Server korzystające z portów dynamicznych lub statycznych?
    Pusta Pusta Porty dynamiczne
    <Number> Pusta Porty dynamiczne — <Number> to port dynamiczny, na który obecnie nasłuchuje program SQL Server.
    <Number1> <Number2> Równoczesne nasłuchiwanie na porcie <Number1> dynamicznym i porcie statycznym <Number2>

Uwaga 16.

Wartość 0 w portach dynamicznych TCP wskazuje, że nazwane wystąpienie nie jest obecnie uruchomione i jest skonfigurowane dla portów dynamicznych. Po uruchomieniu wystąpienia pole wartości będzie odzwierciedlać port dynamiczny używany obecnie przez wystąpienie.

Zobacz też