共用方式為


SQL Server Browser 服務

更新: 2006 年 4 月 14 日

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 會隨 Microsoft SQL Server 2005 安裝,並為該電腦上執行的先前版本 SQL Server 提供此服務 (從 Microsoft SQL Server 7.0 開始)。

SQL Server Browser 可在安裝時設定,或使用「介面區組態」工具設定。您可使用 SQL Server 組態管理員加以管理。依預設,SQL Server Browser 服務會自動啟動。

  • 升級安裝時。
  • 與 SQL Server 2000 的執行個體並存安裝時。
  • 當安裝在叢集上時。
  • 安裝 SQL Server 2005 Enterprise Edition、Standard Edition 或 Workgroup Edition 的具名執行個體時。
  • 安裝 Analysis Services 的具名執行個體時。

背景

在 Microsoft 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 2005 與 SQL Server Browser 支援 ipv6 與 ipv4。

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

如需有關啟動與停止 SQL Server Browser 服務的詳細資訊,請參閱《SQL Server 線上叢書》中的<如何:啟動與停止 SQL Server Browser 服務>。

使用 SQL Server Browser

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

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

  • 任何嘗試連接到具名執行個體卻未完整指定所有參數 (例如 TCP/IP 通訊埠或具名管道) 的元件。
  • 任何產生或傳遞伺服器/執行個體資訊的元件,稍後要重新連接的其他元件可使用此資訊。
  • 連接到具名執行個體但未提供通訊埠編號或管道。
  • 具名執行個體或預設執行個體 (若未使用 TCP/IP 通訊埠 1434) 的 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。

ms181087.note(zh-tw,SQL.90).gif附註:
接聽 IP_ANY 時,若您啟用的是接聽特定 IP,則使用者必須在每一個 IP 上設定相同的 TCP 通訊埠,因為 SQL Server Browser 會傳回它發現的第一個 IP/通訊埠組合。

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

依預設,SQL Server Browser 程式會安裝在 C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe。如果 SQL Server 2000 是安裝在電腦上,但未升級至 Service Pack 3,且 SQL Server 2000 執行個體也未升級,則在 SQL Server 2005 安裝期間,應該停止 SQL Server 2000。若您正在執行 SQL Server 2000,SQL Server Browser 將無法啟動並要求通訊埠 1434,而且安裝可能會因為無法連接而失敗。

移除 SQL Server 2005 的最後一個執行個體之後,就會解除安裝 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 2005,請設定 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 存取>。

變更歷程記錄

版本 歷程記錄

2006 年 4 月 14 日

變更的內容:
  • 釐清<使用 SQL Server Browser>一節,表示這是需要 SQL Server Browser 服務之連接類型的清單。

2005 年 12 月 5 日

變更的內容:
  • 修訂描述 SQL Server Browser 何時自動啟動的清單。