輕松掌握使用SQL Server 瀏覽器
SQL Server Browser 作為 Windows 服務在服務器上運行。SQL Server Browser 偵聽對 SQL Server 資源的傳入請求,并提供計算機上安裝的 SQL Server 實例的相關信息。SQL Server Browser 可用于執行下列三種操作:
瀏覽可用服務器 連接到正確的服務器實例 連接到專用管理員連接 (DAC) 端點SQL Server Browser 服務 (sqlbrowser) 為數據庫引擎的每個實例提供實例名稱和版本號。SQL Server Browser 隨 SQL Server 2005 一起安裝,為該計算機上運行的早期版本的 SQL Server(從 SQL Server 7.0 開始)提供幫助。
默認情況下,不為 SQL Server Express 啟用 SQL Server Browser 服務。SQL Server Browser 可以使用外圍應用配置器工具進行初始配置,并使用 SQL Server 配置管理器進行管理。
背景
在 SQL Server 2000 之前,一臺計算機上只能安裝一個 SQL Server 實例。SQL Server 偵聽 1433 端口傳入的請求,此端口由官方的 Internet 號碼分配機構 (IANA) 分配給 SQL Server。只有一個 SQL Server 實例可以使用端口,因此當 SQL Server 2000 引入對 SQL Server 多個實例的支持時,便開發了 SQL Server 解析協議 (SSRP),用于偵聽 1434 端口。此偵聽器服務用已安裝的實例的名稱以及實例使用的端口或命名管道來響應客戶端請求。為解決 SSRP 系統的限制,SQL Server 2005 提供了 SQL Server Browser 服務來替代 SSRP。
SQL Server 瀏覽器工作原理
啟動一個 SQL Server 實例后,如果為 SQL Server 啟用了 TCP/IP 或 VIA 協議,服務器將被分配一個 TCP/IP 端口。如果啟用了命名管道協議,SQL Server 將偵聽特定的命名管道。該特定實例將使用此端口或管道與客戶端應用程序交換數據。在安裝過程中,1433 端口和管道 sqlquery 將分配給默認實例,但服務器管理員可以隨后使用 SQL Server 配置管理器進行更改。由于只有一個 SQL Server 實例可以使用端口或管道,因此,會將不同的端口號和管道名稱分配給命名實例,包括 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 瀏覽器
當 SQL Server Browser 服務不運行時,如果您提供了正確的端口號或命名管道,仍可以連接到 SQL Server。例如,如果 SQL Server 的默認實例在 1433 端口上運行,則可以使用 TCP/IP 連接到此默認實例。
無法進行以下連接:
在未完全指定所有參數(例如 TCP/IP 端口或命名管道)的情況下,組件嘗試連接到命名實例。
生成或傳遞其他組件隨后要用來進行重新連接的服務器或實例信息的組件。
未提供端口號或管道就連接到命名實例。這包括對命名實例的數據鏡像和聚集命名實例。
到命名實例或默認實例(如果未使用 TCP/IP 1434 端口)的專用管理員連接。
OLAP 重定向程序服務。
枚舉 SQL Server Management Studio、企業管理器或查詢分析器中的服務器。
如果在客戶端服務器方案中使用 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 2000 或 MSDE 的計算機上安裝 SQL Server,則必須將它們升級到 SP3 或更高版本。SP3 之前的版本無法正確共享 1434 端口,并且可能會使 SQL Server 實例不能用于請求客戶端應用程序。盡管可以通過更改啟動順序,使 SQL Server Browser 服務在 SQL Server 2000 或 MSDE 之前啟動,但建議您將所有較舊版本的 SQL Server 更新為最新的 Service Pack。
在計算機中裝有 SQL Server 2000 實例的情況下,如果 SQL Server Browser 未運行,將啟動 SQL Server 2000 偵聽器服務。如果 SQL Server Browser 在偵聽器服務啟動之后啟動,將用 5 秒鐘來等待 SQL Server 2000 放棄 1434 端口。如果未放棄該端口,SQL Server Browser 將無法啟動。對于 SP3 之前的 SQL Server 2000 版本,若要解決此問題,需要停止 SQL Server 2000,啟動 SQL Server Browser,然后重新啟動 SQL Server 2000。SQL Server 2000 偵聽器服務將繼續嘗試使用 1434 端口進行啟動,因此應盡快將 SQL Server 2000 實例升級到 SP3。
SQL Server 7.0 與 SQL Server Browser 沒有沖突。
通過命令行進行安裝、卸載和運行
默認情況下,SQL Server Browser 程序安裝在 C:Program FilesMicrosoft SQL Server90Sharedsqlbrowser.exe 處。如果 SQL Server 2000 已安裝在計算機上,但尚未升級到 SP 3,而且 SQL Server 2000 實例也未進行升級,則應在安裝 SQL Server 2005 期間停止 SQL Server 2000。如果 SQL Server 2000 正在運行,SQL Server Browser 將無法啟動,也無法使用 1434 端口,而安裝可能會因缺少連接而失敗。
SQL Server Browser 服務在刪除 SQL Server 2005 的最后一個實例后被卸載。SQL Server 2000 的實例將恢復其原始行為。
可以使用 -c 開關,從命令行啟動 SQL Server Browser 來排除故障。
sqlbrowser.exe -c
安全性
帳戶權限
SQL Server Browser 使用 SQL Server 解析協議 (SSRP) 偵聽 UDP 端口,并接受未經身份驗證的請求。SQL Server Browser 應該在低特權用戶的安全上下文中運行,以將受到惡意攻擊的幾率降到最低。默認情況下,使用本地系統帳戶啟動 SQL Server Browser。通過使用 Windows 服務程序可以更改登錄帳戶。SQL Server Browser 的最低用戶權限如下:
拒絕通過網絡訪問該計算機。
拒絕本地登錄。
拒絕以批處理作業登錄。
拒絕通過“終端服務”登錄。
以服務身份登錄。
讀取和寫入與網絡通信(端口和管道)相關的 SQL Server 注冊表項。
默認帳戶
安裝程序將 SQL Server 瀏覽器配置為使用安裝期間為服務選定的帳戶。其他可能的帳戶包括:
所有“域本地”帳戶
本地服務帳戶(不可以在 W2K 平臺上使用)
本地系統帳戶(不推薦使用,因為其具有不必要的權限)
隱藏 SQL Server
隱藏的實例是僅支持共享內存連接的 SQL Server 實例。對于 SQL Server 2005,HideInstance 注冊表項指示 SQL Server Browser 不應對此服務器實例的相關信息做出響應。SQL Server Browser 還支持 SQL Server 2000 隱藏實例的方法,這些實例是通過在服務器網絡實用工具中設置 HideServer 選項啟用的。有關詳細信息,請參閱 SQL Server 2005 聯機叢書中的如何隱藏 SQL Server 數據庫引擎實例。
使用防火墻
若要與服務器上有防火墻保護的 SQL Server Browser 服務進行通信,除了打開 SQL Server 使用的 TCP 端口(如 1433)之外,還要打開 UDP 1434 端口。