共用方式為


如何檢查 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位址會以 IP1IP2的格式出現,最多可達 [IP 全部]。 其中一個IP位址適用於回送配接器 127.0.0.1。 計算機上的每個IP位址都會出現更多IP位址。 (您可能會看到IP4和IP6位址。) 若要檢查是否已針對動態埠與靜態埠設定特定IP位址,請使用下表。

    TCP 動態埠 TCP 連接埠 SQL Server 實例使用動態或靜態埠?
    空白 空白 動態埠
    <Number> 空白 動態埠 - <Number> 是 SQL Server 目前正在接聽的動態埠。
    <Number1> <Number2> 同時接聽動態埠 <Number1> 和靜態埠 <Number2>

注意事項

TCP 動態埠中的值為 0 表示具名實例目前未執行,且已針對動態埠設定。 啟動實例之後,值欄位會反映實例目前使用的動態埠。

選項 2:使用 PowerShell

  1. 在 PowerShell ISE 中執行下列腳本。 控制台視窗會顯示 2014 (SQL Server 到 2019 SQL Server 2019 年所有 SQL Server 實例的所有相關 TCP/IP) 目前安裝在系統上。

    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. 在輸出中,檢查 SQL Server 實例的 ListenOnAllIPs 數據行中的值 (參照該數據列) 之 ServerInstance 中的對應值。 如果值設定為 1,請移至步驟 3。 如果設定為 0,請移至步驟 4。

  3. 掃描您實例之 DisplayName 數據行中具有 [任何 IP 位址] 專案之數據列的輸出,或檢查數據列的 TcpDynamicPortsTcpPort 值。 然後使用下表來判斷具名實例是否正在接聽動態或靜態埠。

    TCP 動態埠 TCP 連接埠 SQL Server 實例使用動態或靜態埠?
    空白 空白 動態埠
    <Number> 空白 動態埠 - <Number> 這是 SQL 目前正在接聽的動態埠
    <Number1> <Number2> 同時接聽動態埠 <Number1> 和靜態埠 <Number2>
  4. 請注意,有數個IP位址會以 IP1IP2的格式出現,最多可達 [IP 全部]。 其中一個IP位址適用於回送配接器 127.0.0.1。 計算機上的每個IP位址都會出現更多IP位址。 (您可能會看到IP4和IP6位址。) 若要檢查是否已針對動態埠與靜態埠設定特定IP位址,請使用下表。

    TCP 動態埠 TCP 連接埠 SQL Server 實例使用動態或靜態埠?
    空白 空白 動態埠
    <Number> 空白 動態埠 - <Number> 是 SQL Server 目前正在接聽的動態埠。
    <Number1> <Number2> 同時接聽動態埠 <Number1> 和靜態埠 <Number2>

注意事項

TCP 動態埠中的值為 0 表示具名實例目前未執行,且已針對動態埠設定。 啟動實例之後,值欄位會反映實例目前使用的動態埠。

另請參閱