Поделиться через


Как проверить, прослушивает ли SQL Server динамический порт или статический порт.

В этой статье описывается, как определить, прослушивает ли именованный экземпляр Microsoft SQL Server на динамическом порту и статический порт. Эти сведения могут быть полезны при устранении различных проблем с подключением, связанных с SQL Server.

По умолчанию именованный экземпляр SQL Server настроен для прослушивания динамических портов. Он получает доступный порт из операционной системы. Можно также настроить именованные экземпляры SQL Server для запуска с определенного порта. Это называется статическим портом. Дополнительные сведения о статических и динамических портах в контексте SQL Server см. в разделе "Статические и динамические порты".

Используйте следующую процедуру, чтобы определить, прослушивает ли именованный экземпляр SQL Server динамический порт и статический порт.

Вариант 1. Использование диспетчер конфигурации SQL Server

  1. В диспетчер конфигурации SQL Server разверните конфигурацию сети SQL Server, разверните протоколы для имени экземпляра и дважды щелкните TCP/IP.

  2. В свойствах TCP/IP выберите протокол.

  3. Проверьте значение в параметре "Прослушивание всех ". Если задано значение "Да", перейдите к шагу 4. Если для него задано значение "Нет", перейдите к шагу 6.

  4. Перейдите к IP-адресам и прокрутите внизу страницы свойств TCP/IP.

  5. Проверьте значения в IP All и используйте следующую таблицу, чтобы определить, прослушивает ли именованный экземпляр динамический или статический порт.

    Динамические порты TCP TCP-порт Экземпляр SQL Server с использованием динамических или статических портов?
    Чистого листа Чистого листа Динамические порты
    <Number> Пробел Динамические порты — <Number> это динамический порт, в который в настоящее время прослушивается SQL Server.
    <Number1> <Number2> Параллельное прослушивание динамического порта <Number1> и статического порта <Number2>
  6. Переключитесь на IP-адреса. Обратите внимание, что несколько IP-адресов отображаются в формате IP1, IP2 до IP All. Один из этих IP-адресов предназначен для адаптера обратного цикла 127.0.0.1. Дополнительные IP-адреса отображаются для каждого IP-адреса на компьютере. (Вероятно, вы увидите IP4 и IP6-адреса.) Чтобы проверить, настроен ли конкретный IP-адрес для динамического и статического порта, используйте следующую таблицу.

    Динамические порты TCP TCP-порт Экземпляр SQL Server с использованием динамических или статических портов?
    Чистого листа Чистого листа Динамические порты
    <Number> Пробел Динамические порты — <Number> это динамический порт, в который в настоящее время прослушивается SQL Server.
    <Number1> <Number2> Параллельное прослушивание динамического порта <Number1> и статического порта <Number2>

Примечание.

Значение 0 в динамических портах TCP указывает, что именованный экземпляр в настоящее время не запущен и настроен для динамических портов. После запуска экземпляра поле значения будет отражать динамический порт, используемый экземпляром.

Вариант 2. Использование PowerShell

  1. Выполните следующий сценарий в среде сценариев PowerShell. В окне консоли отображаются все соответствующие TCP/IP-адреса для всех экземпляров SQL Server (SQL Server 2014 по SQL Server 2019), которые в настоящее время установлены в системе.

    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. В выходных данных проверьте значение в столбце ListenOnAllIPs для экземпляра SQL Server (см. соответствующее значение в ServerInstance для этой строки). Если для значения задано значение 1, перейдите к шагу 3. Если для него задано значение 0, перейдите к шагу 4.

  3. Проверьте выходные данные строки с записью "Любой IP-адрес " в столбце DisplayName для экземпляра или проверьте значения TcpDynamicPorts и TcpPort для строки. Затем используйте следующую таблицу, чтобы определить, прослушивает ли именованный экземпляр динамический или статический порт.

    Динамические порты TCP TCP-порт Экземпляр SQL Server с использованием динамических или статических портов?
    Чистого листа Чистого листа Динамические порты
    <Number> Пробел Динамические порты — <Number> это динамический порт SQL, в настоящее время прослушивается
    <Number1> <Number2> Параллельное прослушивание динамического порта <Number1> и статического порта <Number2>
  4. Обратите внимание, что несколько IP-адресов отображаются в формате IP1, IP2 до IP All. Один из этих IP-адресов предназначен для адаптера обратного цикла 127.0.0.1. Дополнительные IP-адреса отображаются для каждого IP-адреса на компьютере. (Вероятно, вы увидите IP4 и IP6-адреса.) Чтобы проверить, настроен ли конкретный IP-адрес для динамического и статического порта, используйте следующую таблицу.

    Динамические порты TCP TCP-порт Экземпляр SQL Server с использованием динамических или статических портов?
    Чистого листа Чистого листа Динамические порты
    <Number> Пробел Динамические порты — <Number> это динамический порт, в который в настоящее время прослушивается SQL Server.
    <Number1> <Number2> Параллельное прослушивание динамического порта <Number1> и статического порта <Number2>

Примечание.

Значение 0 в динамических портах TCP указывает, что именованный экземпляр в настоящее время не запущен и настроен для динамических портов. После запуска экземпляра поле значения будет отражать динамический порт, используемый экземпляром.

См. также