輕松掌握使用SQL Server 瀏覽器
SQL Server Browser 作為 Windows 服務(wù)在服務(wù)器上運(yùn)行。SQL Server Browser 偵聽(tīng)對(duì) SQL Server 資源的傳入請(qǐng)求,并提供計(jì)算機(jī)上安裝的 SQL Server 實(shí)例的相關(guān)信息。SQL Server Browser 可用于執(zhí)行下列三種操作:
瀏覽可用服務(wù)器 連接到正確的服務(wù)器實(shí)例 連接到專(zhuān)用管理員連接 (DAC) 端點(diǎn)SQL Server Browser 服務(wù) (sqlbrowser) 為數(shù)據(jù)庫(kù)引擎的每個(gè)實(shí)例提供實(shí)例名稱(chēng)和版本號(hào)。SQL Server Browser 隨 SQL Server 2005 一起安裝,為該計(jì)算機(jī)上運(yùn)行的早期版本的 SQL Server(從 SQL Server 7.0 開(kāi)始)提供幫助。
默認(rèn)情況下,不為 SQL Server Express 啟用 SQL Server Browser 服務(wù)。SQL Server Browser 可以使用外圍應(yīng)用配置器工具進(jìn)行初始配置,并使用 SQL Server 配置管理器進(jìn)行管理。
背景
在 SQL Server 2000 之前,一臺(tái)計(jì)算機(jī)上只能安裝一個(gè) SQL Server 實(shí)例。SQL Server 偵聽(tīng) 1433 端口傳入的請(qǐng)求,此端口由官方的 Internet 號(hào)碼分配機(jī)構(gòu) (IANA) 分配給 SQL Server。只有一個(gè) SQL Server 實(shí)例可以使用端口,因此當(dāng) SQL Server 2000 引入對(duì) SQL Server 多個(gè)實(shí)例的支持時(shí),便開(kāi)發(fā)了 SQL Server 解析協(xié)議 (SSRP),用于偵聽(tīng) 1434 端口。此偵聽(tīng)器服務(wù)用已安裝的實(shí)例的名稱(chēng)以及實(shí)例使用的端口或命名管道來(lái)響應(yīng)客戶端請(qǐng)求。為解決 SSRP 系統(tǒng)的限制,SQL Server 2005 提供了 SQL Server Browser 服務(wù)來(lái)替代 SSRP。
SQL Server 瀏覽器工作原理
啟動(dòng)一個(gè) SQL Server 實(shí)例后,如果為 SQL Server 啟用了 TCP/IP 或 VIA 協(xié)議,服務(wù)器將被分配一個(gè) TCP/IP 端口。如果啟用了命名管道協(xié)議,SQL Server 將偵聽(tīng)特定的命名管道。該特定實(shí)例將使用此端口或管道與客戶端應(yīng)用程序交換數(shù)據(jù)。在安裝過(guò)程中,1433 端口和管道 sqlquery 將分配給默認(rèn)實(shí)例,但服務(wù)器管理員可以隨后使用 SQL Server 配置管理器進(jìn)行更改。由于只有一個(gè) SQL Server 實(shí)例可以使用端口或管道,因此,會(huì)將不同的端口號(hào)和管道名稱(chēng)分配給命名實(shí)例,包括 SQL Server Express。默認(rèn)情況下,命名實(shí)例被配置為使用動(dòng)態(tài)端口,因此在啟動(dòng) SQL Server 時(shí)分配可用的端口。可以為 SQL Server 實(shí)例分配特定端口。連接時(shí),客戶端可以指定所需端口。但是如果端口是動(dòng)態(tài)分配的,端口號(hào)可能會(huì)在重新啟動(dòng) SQL Server 時(shí)被更改,因此正確的端口號(hào)對(duì)于客戶端來(lái)說(shuō)是不確定的。
啟動(dòng)后,SQL Server Browser 將啟動(dòng)并使用 UDP 1434 端口。SQL Server Browser 將讀取注冊(cè)表,識(shí)別計(jì)算機(jī)上的所有 SQL Server 實(shí)例,并注明它們使用的端口和命名管道。當(dāng)一臺(tái)服務(wù)器具有兩個(gè)或多個(gè)網(wǎng)卡時(shí),SQL Server Browser 會(huì)為 SQL Server 返回啟用的所有端口。SQL Server 2005 和 SQL Server Browser 支持 ipv6 和 ipv4。
如果 SQL Server 2000 和 SQL Server 2005 客戶端請(qǐng)求 SQL Server 資源,客戶端網(wǎng)絡(luò)庫(kù)將使用 1434 端口向服務(wù)器發(fā)送一條 UDP 消息。SQL Server Browser 將用請(qǐng)求的實(shí)例的 TCP/IP 端口或命名管道做出響應(yīng)。然后,客戶端應(yīng)用程序中的網(wǎng)絡(luò)庫(kù)將使用所需實(shí)例的端口或命名管道向服務(wù)器發(fā)送請(qǐng)求來(lái)完成連接。
使用 SQL Server 瀏覽器
當(dāng) SQL Server Browser 服務(wù)不運(yùn)行時(shí),如果您提供了正確的端口號(hào)或命名管道,仍可以連接到 SQL Server。例如,如果 SQL Server 的默認(rèn)實(shí)例在 1433 端口上運(yùn)行,則可以使用 TCP/IP 連接到此默認(rèn)實(shí)例。
無(wú)法進(jìn)行以下連接:
在未完全指定所有參數(shù)(例如 TCP/IP 端口或命名管道)的情況下,組件嘗試連接到命名實(shí)例。
生成或傳遞其他組件隨后要用來(lái)進(jìn)行重新連接的服務(wù)器或?qū)嵗畔⒌慕M件。
未提供端口號(hào)或管道就連接到命名實(shí)例。這包括對(duì)命名實(shí)例的數(shù)據(jù)鏡像和聚集命名實(shí)例。
到命名實(shí)例或默認(rèn)實(shí)例(如果未使用 TCP/IP 1434 端口)的專(zhuān)用管理員連接。
OLAP 重定向程序服務(wù)。
枚舉 SQL Server Management Studio、企業(yè)管理器或查詢分析器中的服務(wù)器。
如果在客戶端服務(wù)器方案中使用 SQL Server(例如,應(yīng)用程序通過(guò)網(wǎng)絡(luò)訪問(wèn) SQL Server),那么,若要停止或禁用 SQL Server Browser 服務(wù),必須為每個(gè)實(shí)例分配一個(gè)特定端口號(hào),并編寫(xiě)客戶端應(yīng)用程序代碼以便始終使用該端口號(hào)。此方法存在如下問(wèn)題:
必須更新和維護(hù)客戶端應(yīng)用程序代碼才能確保它連接到正確的端口。
如果服務(wù)器上的其他服務(wù)或應(yīng)用程序可以使用您為每個(gè)實(shí)例選擇的端口,則會(huì)導(dǎo)致 SQL Server 實(shí)例不可用。
并行安裝 SQL Server 2000
在 SQL Server 2000 中,通過(guò) SQL Server 服務(wù)識(shí)別服務(wù)器連接端點(diǎn)。在 SQL Server 2005 中,該功能是通過(guò) SQL Server Browser 服務(wù)實(shí)現(xiàn)的。如果在還運(yùn)行 SQL Server 2000 或 MSDE 的計(jì)算機(jī)上安裝 SQL Server,則必須將它們升級(jí)到 SP3 或更高版本。SP3 之前的版本無(wú)法正確共享 1434 端口,并且可能會(huì)使 SQL Server 實(shí)例不能用于請(qǐng)求客戶端應(yīng)用程序。盡管可以通過(guò)更改啟動(dòng)順序,使 SQL Server Browser 服務(wù)在 SQL Server 2000 或 MSDE 之前啟動(dòng),但建議您將所有較舊版本的 SQL Server 更新為最新的 Service Pack。
在計(jì)算機(jī)中裝有 SQL Server 2000 實(shí)例的情況下,如果 SQL Server Browser 未運(yùn)行,將啟動(dòng) SQL Server 2000 偵聽(tīng)器服務(wù)。如果 SQL Server Browser 在偵聽(tīng)器服務(wù)啟動(dòng)之后啟動(dòng),將用 5 秒鐘來(lái)等待 SQL Server 2000 放棄 1434 端口。如果未放棄該端口,SQL Server Browser 將無(wú)法啟動(dòng)。對(duì)于 SP3 之前的 SQL Server 2000 版本,若要解決此問(wèn)題,需要停止 SQL Server 2000,啟動(dòng) SQL Server Browser,然后重新啟動(dòng) SQL Server 2000。SQL Server 2000 偵聽(tīng)器服務(wù)將繼續(xù)嘗試使用 1434 端口進(jìn)行啟動(dòng),因此應(yīng)盡快將 SQL Server 2000 實(shí)例升級(jí)到 SP3。
SQL Server 7.0 與 SQL Server Browser 沒(méi)有沖突。
通過(guò)命令行進(jìn)行安裝、卸載和運(yùn)行
默認(rèn)情況下,SQL Server Browser 程序安裝在 C:Program FilesMicrosoft SQL Server90Sharedsqlbrowser.exe 處。如果 SQL Server 2000 已安裝在計(jì)算機(jī)上,但尚未升級(jí)到 SP 3,而且 SQL Server 2000 實(shí)例也未進(jìn)行升級(jí),則應(yīng)在安裝 SQL Server 2005 期間停止 SQL Server 2000。如果 SQL Server 2000 正在運(yùn)行,SQL Server Browser 將無(wú)法啟動(dòng),也無(wú)法使用 1434 端口,而安裝可能會(huì)因缺少連接而失敗。
SQL Server Browser 服務(wù)在刪除 SQL Server 2005 的最后一個(gè)實(shí)例后被卸載。SQL Server 2000 的實(shí)例將恢復(fù)其原始行為。
可以使用 -c 開(kāi)關(guān),從命令行啟動(dòng) SQL Server Browser 來(lái)排除故障。
sqlbrowser.exe -c
安全性
帳戶權(quán)限
SQL Server Browser 使用 SQL Server 解析協(xié)議 (SSRP) 偵聽(tīng) UDP 端口,并接受未經(jīng)身份驗(yàn)證的請(qǐng)求。SQL Server Browser 應(yīng)該在低特權(quán)用戶的安全上下文中運(yùn)行,以將受到惡意攻擊的幾率降到最低。默認(rèn)情況下,使用本地系統(tǒng)帳戶啟動(dòng) SQL Server Browser。通過(guò)使用 Windows 服務(wù)程序可以更改登錄帳戶。SQL Server Browser 的最低用戶權(quán)限如下:
拒絕通過(guò)網(wǎng)絡(luò)訪問(wèn)該計(jì)算機(jī)。
拒絕本地登錄。
拒絕以批處理作業(yè)登錄。
拒絕通過(guò)“終端服務(wù)”登錄。
以服務(wù)身份登錄。
讀取和寫(xiě)入與網(wǎng)絡(luò)通信(端口和管道)相關(guān)的 SQL Server 注冊(cè)表項(xiàng)。
默認(rèn)帳戶
安裝程序?qū)?SQL Server 瀏覽器配置為使用安裝期間為服務(wù)選定的帳戶。其他可能的帳戶包括:
所有“域本地”帳戶
本地服務(wù)帳戶(不可以在 W2K 平臺(tái)上使用)
本地系統(tǒng)帳戶(不推薦使用,因?yàn)槠渚哂胁槐匾臋?quán)限)
隱藏 SQL Server
隱藏的實(shí)例是僅支持共享內(nèi)存連接的 SQL Server 實(shí)例。對(duì)于 SQL Server 2005,HideInstance 注冊(cè)表項(xiàng)指示 SQL Server Browser 不應(yīng)對(duì)此服務(wù)器實(shí)例的相關(guān)信息做出響應(yīng)。SQL Server Browser 還支持 SQL Server 2000 隱藏實(shí)例的方法,這些實(shí)例是通過(guò)在服務(wù)器網(wǎng)絡(luò)實(shí)用工具中設(shè)置 HideServer 選項(xiàng)啟用的。有關(guān)詳細(xì)信息,請(qǐng)參閱 SQL Server 2005 聯(lián)機(jī)叢書(shū)中的如何隱藏 SQL Server 數(shù)據(jù)庫(kù)引擎實(shí)例。
使用防火墻
若要與服務(wù)器上有防火墻保護(hù)的 SQL Server Browser 服務(wù)進(jìn)行通信,除了打開(kāi) SQL Server 使用的 TCP 端口(如 1433)之外,還要打開(kāi) UDP 1434 端口。
