SQL ServerBrowser 程式會以 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 Browser。 根據預設,SQL Server Browser 服務會在下列情況下自動啟動:
升級安裝時。
在叢集上安裝時。
安裝 Database Engine 的具名實例時,包括 SQL Server Express 的所有實例。
安裝 Analysis Services 的具名實例時。
背景
在 SQL Server 2000 之前,電腦上只能安裝一個 SQL Server 實例。 SQL Server 會在官方 Internet Assigned Numbers Authority (IANA) 指派給 SQL Server 的連接埠 1433 上接聽內送要求。 只有一個 SQL Server 實例可以使用埠,因此,當 SQL Server 2000 引進對多個 SQL Server 實例的支援時,SQL Server 解析通訊協定 (SSRP) 已開發為接聽 UDP 連接埠 1434。 此接聽程式服務回應用戶端要求,其中包含已安裝實例的名稱,以及實例所使用的埠或命名管道。 為了解決 SSRP 系統的限制,SQL Server 2005 引進了 SQL Server Browser 服務來取代 SSRP。
SQL Server 瀏覽器的運作方式
當 SQL Server 實例啟動時,如果 SQL Server 啟用 TCP/IP 通訊協定,伺服器就會獲指派 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 Browser 服務的相關信息,請參閱 啟動、停止、暫停、繼續、重新啟動 Database Engine、SQL Server Agent 或 SQL Server Browser 服務。
使用 SQL Server 瀏覽器
如果 SQL Server Browser 服務未執行,如果您提供正確的埠號碼或命名管道,您仍然可以連線到 SQL Server。 例如,如果 SQL Server 在埠 1433 上執行,您可以使用 TCP/IP 連線到預設實例。
不過,如果 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 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 服務。
您可以使用 -c 開關,從命令提示符啟動 SQL Server Browser 以進行疑難排解:
<drive>\<path>\sqlbrowser.exe -c
安全
帳戶許可權
SQL Server Browser 會接聽 UDP 連接埠,並使用 SQL Server 解析通訊協定 (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)。 如需使用防火牆的相關信息,請參閱《SQL Server 在線叢書》中的<如何:設定 SQL Server 存取防火牆>。