SQL Server Browser 服務

適用於:SQL Server - 僅限 Windows

SQL Server Browser 程式會以 Windows 服務的方式執行。 SQL Server Browser 會接聽 Microsoft SQL Server 資源的內送要求,並提供電腦上所安裝 SQL Server 執行個體的相關資訊。 SQL Server Browser 可協助執行下列動作:

  • 瀏覽可用的伺服器清單。
  • 連接到正確的伺服器執行個體。
  • 連接到專用管理員連接 (DAC) 端點。

針對資料庫引擎和 SQL Server Analysis Services (SSAS) 的每個執行個體,SQL Server Browser 服務 (sqlbrowser) 會提供執行個體名稱和版本號碼。 SQL Server Browser 會隨 SQL Server 一起安裝。

SQL Server Browser 可以在安裝過程中設定,或透過使用 SQL Server 組態管理員來設定。 根據預設,SQL Server Browser 服務會在下列情況下自動啟動:

  • 升級安裝時。
  • 在叢集上安裝時。
  • 安裝資料庫引擎的具名執行個體 (包括所有 SQL Server Express 執行個體) 時。
  • 安裝 SSAS 的具名執行個體時。

背景

在 SQL Server 2000 (8.x) 之前,一部電腦上只能安裝一個 SQL Server 執行個體。 SQL Server 會在官方 Internet Assigned Numbers Authority (IANA) 指派給 SQL Server 的連接埠 1433 上接聽內送要求。 只有一個 SQL Server 執行個體可以使用連接埠,因此當 SQL Server 2000 (8.x) 推出多個 SQL Server 執行個體的支援時,還開發了 SQL Server Resolution Protocol (SSRP) 來接聽 UDP 連接埠 1434。 此接聽服務是以安裝的執行個體名稱,以及執行個體使用的連接埠或具名管道來回應用戶端要求。

為了解決 SSRP 系統的限制,SQL Server 2005 (9.x) 引進 SQL Server Browser 服務來取代 SSRP。

SQL Server Browser 的運作方式

當 SQL Server 的執行個體啟動時,如果已為 [SQL Server 啟用 TCP/IP 通訊協定][def],則會指派 TCP/IP 連接埠給伺服器。 如果已啟用具名管道通訊協定,則 SQL Server 會接聽特定具名管道。 這個通訊埠或「管道」是由該特定執行個體使用,來與用戶端應用程式交換資料。 TCP 通訊埠 1433 和管道 \sql\query 會在安裝期間指派至預設執行個體。 不過,伺服器管理員稍後可以使用 SQL Server 組態管理員來變更這些內容。

由於只有一個 SQL Server 執行個體可以使用連接埠或管道,因此會指派不同的連接埠號碼和管道名稱給具名執行個體,包括 SQL Server Express。 具名執行個體和 SQL Server Express 在啟用時,預設都已設定為使用動態連接埠。 也就是說,當 SQL Server 啟動時,會指派可用的連接埠。

如果需要,也可以將特定連接埠指派給 SQL Server 執行個體。 連接時,用戶端可以指定特定連接埠。 但如果該連接埠是動態指派的,則每當 SQL Server 重新啟動時,連接埠號碼可能會變更,導致用戶端不知道正確的連接埠號碼。

啟動時,SQL Server Browser 會啟動並要求 UDP 連接埠 1434。 SQL Server Browser 會讀取登錄、識別電腦上的所有 SQL Server 執行個體,並記下這些執行個體所使用的連接埠和具名管道。 當伺服器具有兩張或多張網路卡時,SQL Server Browser 會傳回其所發現第一個為 SQL Server 啟用的連接埠。 SQL Server Browser 支援 ipv6 和 ipv4。

當 SQL Server 用戶端要求 SQL Server 資源時,用戶端網路程式庫會使用連接埠 1434 將 UDP 訊息傳送至伺服器。 SQL Server Browser 會以所要求執行個體的 TCP/IP 連接埠或具名管道回應。 於是,用戶端應用程式上的網路程式庫會使用所要的執行個體的通訊埠或具名管道,將要求傳送至伺服器來完成連接。

若要了解如何啟動和停止 SQL Server Browser 服務,請參閱啟動、停止、暫停、繼續、重新啟動 SQL Server 服務一文。

使用 SQL Server Browser

如果 SQL Server Browser 服務並未執行,但您提供正確的連接埠號碼或具名管道,則仍然可以連接到 SQL Server。 例如,您可以使用在連接埠 1433 執行的 TCP/IP,連接到 SQL Server 的預設執行個體。

不過,如果 SQL Server Browser 服務並未執行,則下列連線沒有作用:

  • 任何嘗試連接到具名執行個體卻未完整指定所有參數 (例如 TCP/IP 通訊埠或具名管道) 的元件。
  • 任何產生或傳遞伺服器/執行個體資訊的元件,稍後要重新連接的其他元件可使用此資訊。
  • 連接到具名執行個體但未提供通訊埠編號或管道。
  • 具名執行個體或預設執行個體的 DAC (若未使用 TCP/IP 連接埠 1433)。
  • OLAP 重新導向程式服務。
  • 列舉 SQL Server Management StudioAzure Data Studio 中的伺服器。

假設您在用戶端伺服器案例中使用 SQL Server (例如,當您的應用程式透過網路存取 SQL Server 時)。 如果您停止或停用 SQL Server Browser 服務,則必須將特定連接埠號碼指派至每個執行個體,並撰寫用戶端應用程式程式碼以使用該連接埠號碼。 此方式有下列問題:

  • 您必須更新和維護用戶端應用程式程式碼,以確保連接到正確的連接埠。
  • 您為每個執行個體選取的連接埠可能正由該伺服器上的其他服務或應用程式使用中,導致 SQL Server 的執行個體無法使用。

叢集和 SQL Server Browser

SQL Server Browser 不是叢集資源,不支援從一個叢集節點容錯移轉到另一個叢集節點。 因此,在叢集的情況下,應該要為每個叢集節點安裝及開啟 SQL Server Browser。 在叢集上,SQL Server Browser 會接聽 IP_ANY。

注意

接聽 IP_ANY 時,若您啟用的是接聽特定 IP,則使用者必須在每個 IP 上設定相同的 TCP 通訊埠,因為 SQL Server Browser 會傳回其所發現的第一個 IP/連接埠組合。

從命令列安裝、解除安裝和執行

根據預設,SQL Server Browser 程式會安裝在 C:\Program Files (x86)\Microsoft SQL Server\90\Shared\sqlbrowser.exe

移除 SQL Server 的最後一個執行個體之後,就會解除安裝 SQL Server Browser 服務。

SQL Server Browser 可以使用 -c 參數從命令提示字元啟動來進行疑難排解:

<drive>\<path>\sqlbrowser.exe -c

安全性

SQL Server Browser 服務對於促進與 SQL Server 執行個體的網路通訊至關重要。

SQL Server Browser Service 的安全性措施包括:

  • 設定防火牆以允許其流量。
  • 限制對受信任 IP 位址的存取。
  • 定期套用更新來修補弱點。
  • 此外,請務必實作增強式驗證和授權原則,以防止未經授權的存取,並維護 SQL Server 環境的完整性。

帳戶權限

SQL Server Browser 可接聽 UDP 連接埠,並使用 SQL Server Resolution Protocol (SSRP) 來接受未驗證的要求。 SQL Server Browser 應該在低權限使用者的資訊安全內容中執行,以降低惡意攻擊的暴露風險。 可利用 SQL Server 組態管理員來變更登入帳戶。

SQL Server Browser 的最低使用者權限如下:

  • 拒絕從網路存取這台電腦。
  • 拒絕在本機登入。
  • 拒絕以批次工作登入。
  • 拒絕透過終端機服務登入。
  • 以服務登入。
  • 讀取及寫入與網路通訊 (連接埠和管道) 相關的 SQL Server 登錄機碼。

預設帳戶

在安裝過程中,安裝程式會設定 SQL Server Browser 使用針對服務選取的帳戶。 其他可能的帳戶包括:

  • 任何網域\本機帳戶。
  • 本機服務帳戶。
  • 本機系統帳戶 (不建議使用,因為有不必要的權限)。

隱藏 SQL Server

隱藏的執行個體是只支援共用記憶體連接的 SQL Server 執行個體。 對於 SQL Server,請設定 HideInstance 旗標以指示 SQL Server Browser 不應使用關於此伺服器執行個體的資訊來回應。

使用防火牆

若要與位於防火牆後面之伺服器上的 SQL Server Browser 服務進行通訊,請開啟 UDP 連接埠 1434,以及 SQL Server 使用的 TCP 通訊埠 (例如 1433)。 如需使用防火牆的資訊,請參閱設定 Windows 防火牆以允許 SQL Server 存取

另請參閱

在下列文章中深入了解相關概念: