SQL Server Browser 服務

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

  • 瀏覽可用伺服器的清單

  • 連接到正確的伺服器執行個體

  • 連接到專用管理員連接 (DAC) 端點

對於 Database Engine 與 SSAS 的每個執行個體,SQL Server Browser 服務 (sqlbrowser) 會提供執行個體名稱與版本號碼。SQL Server Browser 會隨 SQL Server 安裝,並為該電腦上執行的舊版 SQL Server 提供此服務 (從 SQL Server 7.0 開始)。

您可以在安裝期間或使用 SQL Server 組態管理員來設定 SQL Server Browser。依預設,SQL Server Browser 服務會自動啟動。

  • 升級安裝時。

  • 與 SQL Server 2000 的執行個體並存安裝時。

  • 安裝在叢集上時。

  • 安裝 SQL Server Database Engine 的具名執行個體並包括 SQL Server Express 的所有執行個體時。

  • 安裝 Analysis Services 的具名執行個體時。

背景

在 SQL Server 2000 之前,電腦上只可以安裝一個 SQL Server 的執行個體。SQL Server 會接聽通訊埠 1433 內送的要求,該通訊埠是由 Internet Assigned Numbers Authority (IANA) 官方指派給 SQL Server 的。只有一個 SQL Server 的執行個體可以使用通訊埠,因此當 SQL Server 2000 推出支援多個 SQL Server 執行個體的功能時,發展了 SQL Server Resolution Protocol (SSRP) 來接聽 UDP 通訊埠 1434。此接聽服務是以安裝的執行個體名稱,以及執行個體使用的通訊埠或具名管道來回應用戶端要求。為了克服 SSRP 系統的限制,SQL Server 2005 引進 SQL Server Browser 服務來取代 SSRP。

SQL Server Browser 如何運作

當 SQL Server 的執行個體啟動時,如果已為 SQL Server 啟用 TCP/IP 或 VIA 通訊協定,則會指派 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 瀏覽器服務>。

重要事項重要事項

VIA 通訊協定已被取代。未來的 Microsoft SQL Server 版本將移除這項功能。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

使用 SQL Server Browser

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

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

  • 任何嘗試連接到具名執行個體卻未完整指定所有參數 (例如 TCP/IP 通訊埠或具名管道) 的元件。

  • 任何產生或傳遞伺服器/執行個體資訊的元件,稍後要重新連接的其他元件可使用此資訊。

  • 連接到具名執行個體但未提供通訊埠編號或管道。

  • 具名執行個體或預設執行個體 (若未使用 TCP/IP 通訊埠 1433) 的 DAC。

  • OLAP 重新導向程式服務。

  • 列舉 SQL Server Management Studio、Enterprise Manager 或 Query Analyzer 中的伺服器。

如果您在主從式架構狀況中使用 SQL Server (例如,當應用程式透過網路上存取 SQL Server 時),且如果您停止或停用 SQL Server Browser 服務,則必須指派特定通訊埠編號給每一個執行個體,並將用戶端應用程式碼撰寫為永遠使用此通訊埠編號。此方式有下列問題:

  • 您必須更新或維護用戶端應用程式碼,才能確保它是連接到正確的通訊埠。

  • 您為每個執行個體選取的通訊埠可能正由該伺服器上的其他服務或應用程式使用中,導致 SQL Server 執行個體無法使用。

與 SQL Server 2000 並存安裝

在 SQL Server 2000 中,伺服器連接端點的識別是由 SQL Server 服務來執行。SQL Server 2005 以 SQL Server Browser 服務取代該功能。如果您將 SQL Server 安裝在一部也執行 SQL Server 2000 或 MSDE 的電腦上,則必須確定 SQL Server 2000 或 MSDE 已升級至 Service Pack 3a (SP3a) 或更新版本。SP3a 之前的版本不能正確共用通訊埠 1434,而且無法讓發出要求的用戶端應用程式使用 SQL Server 的執行個體。雖然您可以變更服務的啟動順序,使 SQL Server Browser 服務在 SQL Server 2000 或 MSDE 之前啟動,但我們建議您將所有舊版的 SQL Server 都更新為最新的 Service Pack。

當電腦上安裝沒有更新為 Service Pack 3a 以上的 SQL Server 2000 執行個體時,如果 SQL Server Browser 未執行,SQL Server 2000 接聽服務就會啟動。如果 SQL Server Browser 在接聽服務啟動,它會等候 5 秒讓 SQL Server 2000 放棄通訊埠 1434。若無法取得通訊埠,SQL Server Browser 將無法啟動。若要解決 SQL Server 2000 Service Pack 3a 之前版本發生的這個問題,請停止 SQL Server 2000、啟動 SQL Server Browser,然後重新啟動 SQL Server 2000。SQL Server 2000 接聽服務會繼續嘗試在通訊埠 1434 啟動;因此,應該儘快將 SQL Server 2000 的執行個體升級至 Service Pack 3a。

SQL Server 7.0 沒有類似的功能,因此不會與 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\Microsoft SQL Server\100\Shared\sqlbrowser.exe。如果 SQL Server 2000 是安裝在電腦上,但未升級至 Service Pack 3,且 SQL Server 2000 執行個體也未升級,則在 SQL Server 安裝期間,應該停止 SQL Server 2000。若您正在執行 SQL Server 2000,SQL Server Browser 將無法啟動並要求通訊埠 1434,而且安裝可能會因為無法連接而失敗。

移除 SQL Server 的最後一個執行個體之後,就會解除安裝 SQL Server Browser 服務。SQL Server 2000 的執行個體繼續其原始行為。

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

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

安全性

帳戶權限

SQL Server Browser 會接聽 UDP 通訊埠,並接受使用 SQL Server Resolution Protocol (SSRP) 的未驗證要求。您應該使用具有最低權限之使用者身分的安全內容中執行 SQL Server Browser,以降低遭受惡意攻擊的機會。可利用 SQL Server 組態管理員來變更登入帳戶。SQL Server Browser 所需的最低使用者權限如下:

  • 拒絕從網路存取這部電腦

  • 拒絕本機登入

  • 拒絕以批次作業登入

  • 拒絕透過終端機服務登入

  • 登入為服務

  • 讀寫與網路通訊 (通訊埠和管道) 有關的 SQL Server 登錄機碼。

預設帳戶

在安裝過程中,安裝程式會設定 SQL Server Browser 使用此帳戶來啟動服務。其他可能的帳戶包括下列各項:

  • 任何 [網域\本機] 帳戶

  • [本機服務] 帳戶 (在 W2K 平台上無法使用)

  • [本機系統] 帳戶 (不建議使用,因為有不必要的權限)

隱藏 SQL Server

隱藏的執行個體是只支援共用記憶體連接的 SQL Server 執行個體。對於 SQL Server,請設定 HideInstance 旗標以指示 SQL Server Browser 不應回應關於此伺服器執行個體的資訊。SQL Server Browser 也支援隱藏執行個體的 SQL Server 2000 方法,這是透過伺服器網路公用程式設定 HideServer 選項來啟用的。如需有關設定 HideServer 選項的詳細資訊,請參閱《SQL Server 線上叢書》中的<如何:隱藏 SQL Server Database Engine 的執行個體>。

使用防火牆

若要與位於防火牆後面之伺服器上的 SQL Server Browser 服務進行通訊,除了 SQL Server 使用的 TCP 通訊埠 (例如 1433) 之外,可開啟 UDP 通訊埠 1434。如需有關使用防火牆的詳細資訊,請參閱《SQL Server 線上叢書》中的<如何:設定防火牆供 SQL Server 存取>。