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

W tym artykule omówiono sposób określania, czy wystąpienie nazwane SQL Server firmy Microsoft nasłuchuje na porcie dynamicznym, a nie na porcie statycznym. Te informacje mogą być przydatne podczas rozwiązywania różnych problemów z połączeniem, które są związane z SQL Server.

Domyślnie SQL Server nazwane wystąpienie jest skonfigurowane do nasłuchiwania na portach dynamicznych. Pobiera dostępny port z systemu operacyjnego. Można również skonfigurować SQL Server nazwanych wystąpień, aby rozpoczynać się od określonego portu. Jest to nazywane portem statycznym. Aby uzyskać więcej informacji na temat portów statycznych i dynamicznych w kontekście SQL Server, zobacz Porty statyczne i dynamiczne.

Użyj poniższej procedury, aby określić, czy SQL Server nazwane wystąpienie nasłuchuje na porcie dynamicznym, a nie na porcie statycznym.

Opcja 1. Użyj SQL Server Configuration Manager

  1. W SQL Server Configuration Manager rozwiń węzeł SQL Server Konfiguracja sieci, 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 w adresie IP All 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 SQL Server wystąpienie przy użyciu portów dynamicznych lub statycznych?
    Puste Puste Porty dynamiczne
    <Number> Puste Porty dynamiczne — <Number> jest portem dynamicznym, na SQL Server aktualnie nasłuchuje
    <Number1> <Number2> Jednoczesne 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, do adresu IP Wszystkie. Jeden z tych adresów IP jest przeznaczony dla karty sprzężenia zwrotnego 127.0.0.1. Dla każdego adresu IP na komputerze jest wyświetlanych więcej adresów IP. (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 SQL Server wystąpienie przy użyciu portów dynamicznych lub statycznych?
    Puste Puste Porty dynamiczne
    <Number> Puste Porty dynamiczne — <Number> to port dynamiczny, na który obecnie nasłuchuje SQL Server.
    <Number1> <Number2> Jednoczesne nasłuchiwanie na porcie <Number1> dynamicznym i porcie statycznym <Number2>

Uwaga

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 programie PowerShell ISE. W oknie Konsola są wyświetlane wszystkie odpowiednie protokoły TCP/IP dla wszystkich wystąpień SQL Server (od SQL Server 2014 r. do SQL Server 2019 r.), 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 wystąpienia SQL Server (zapoznaj się z odpowiednią wartością w polu ServerInstance dla tego wiersza). Jeśli wartość jest ustawiona na 1, przejdź do kroku 3. Jeśli jest ustawiona wartość 0, przejdź do kroku 4.

  3. Przeskanuj dane wyjściowe wiersza z wpisem Dowolny adres IP w kolumnie DisplayName dla 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 SQL Server wystąpienie przy użyciu portów dynamicznych lub statycznych?
    Puste Puste Porty dynamiczne
    <Number> Puste Porty dynamiczne — <Number> czy dynamiczny port SQL aktualnie nasłuchuje
    <Number1> <Number2> Jednoczesne 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, do adresu IP Wszystkie. Jeden z tych adresów IP jest przeznaczony dla karty sprzężenia zwrotnego 127.0.0.1. Dla każdego adresu IP na komputerze jest wyświetlanych więcej adresów IP. (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 SQL Server wystąpienie przy użyciu portów dynamicznych lub statycznych?
    Puste Puste Porty dynamiczne
    <Number> Puste Porty dynamiczne — <Number> to port dynamiczny, na który obecnie nasłuchuje SQL Server.
    <Number1> <Number2> Jednoczesne nasłuchiwanie na porcie <Number1> dynamicznym i porcie statycznym <Number2>

Uwaga

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ż