天天看點

SQL Browser 動态端口

一、啟用tcp端口

1、啟用tcp/ip協定

  打開sscm(sql server configuration manager)。預設情況下,開發版、評估版、express版禁用了tcp/ip協定。

SQL Browser 動态端口

2、全部偵聽

  這個選項用來訓示 sql server 是否偵聽所有綁定到計算機網卡的 ip 位址。如果設定為“是”,則 ipall 屬性框的設定将應用于所有 ip 位址。預設值為“是”。

SQL Browser 動态端口

  如果設定為“否”,則使用每個 ip 位址各自的屬性對話框對各個 ip 位址進行配置。

SQL Browser 動态端口

3、sql server browser

SQL Browser 動态端口

在sql server 2000 以前的版本中,在一台伺服器上隻能有一個sql server 安裝,相當于隻能安裝一個預設的執行個體。此時,sql server 始終隻偵聽tcp1433 端口或命名管道\sql\query。

  從sql server 2000 開始,引入了“執行個體”的概念,在一台伺服器上可以有多個sql server 安裝。而tcp1433 或命名管道\sql\query 隻能被一個連接配接使用,一般配置設定給預設執行個體。為了解決端口沖突,sql server 2000 引入了×××p 協定(sql server resolution protocol,即sql server解析協定),使用udp1434 端口進行偵聽。該偵聽器用已安裝的執行個體的名稱以及執行個體使用的端口或命名管道來響應用戶端請求。

  從sql server 2005 開始,使用sql server browser 代替×××p。如果伺服器上沒有運作該服務,則不能向用戶端提供端口号或管道,而且ssms(或sql server 2000的企業管理器、查詢分析器)中的枚舉服務不能正常工作。

4、動态端口

  命名執行個體在安裝完成之後,預設使用動态端口。每次啟動這個命名執行個體,都可能使用不同的tcp端口。可以在該命名執行個體啟動完成之後,再進入這個頁面,檢視目前正在使用的端口。

SQL Browser 動态端口

5、端口沖突

  當sql server執行個體啟動時遇到端口沖突,将導緻執行個體的啟動失敗。可在系統中查到以下事件。

SQL Browser 動态端口
SQL Browser 動态端口
SQL Browser 動态端口
SQL Browser 動态端口
SQL Browser 動态端口

 、

二、通路遠端預設執行個體

  本實驗從用戶端192.168.1.2去通路sql server伺服器192.168.1.1的預設執行個體。同時在用戶端使用microsoft 推薦的network monitor 3.4進行網絡抓包分析。

省略....

2、從sql server 登出

三、通路遠端命名執行個體

  本實驗從用戶端192.168.1.2去通路sql server伺服器192.168.1.1的命名執行個體。

1、關閉udp1434端口或停止sql server browser導緻無法連接配接

2、正常連接配接

3、從sql server 登出

四、實驗:用戶端通路

1. 實驗環境

  localhost安裝了預設執行個體mssqlserver,端口1433;還安裝了一個命名執行個體sqlexpress,啟動本執行個體後發現實際使用端口1031。

2. 連接配接字元串

  本實驗使用的驅動程式為2種:ole db provider for sql server 是windows 作業系統內建的驅動程式,俗稱ado for sql server;sql server native client 10.0 需要事先安裝sql server 用戶端。

  可以在本機的 odbc 設定界面檢視已經安裝的驅動程式。

SQL Browser 動态端口

  為避開.net framework的幹擾,本實驗使用最古老的開發工具borland delphi 7。添加一個 tadoconnection 控件,其 connectionstring 字元串為以下示例之一:

(1)驅動程式使用ole db provider for sql server。采用windows內建身份驗證。

// provider=sqloledb.1;integrated security=sspi;persist security info=false;initial catalog=master;data source=localhost

(2)驅動程式使用ole db provider for sql server,采用sql server混合身份驗證。

// provider=sqloledb.1;persist security info=false;user id=sa;initial catalog=master;data source=localhost

(3)驅動程式使用sql server native client 10.0。采用windows內建身份驗證。

// provider=sqlncli10.1;integrated security=sspi;persist security info=false;user id="";initial catalog=master;data source=localhost;initial file name="";server spn=""

(3)驅動程式使用sql server native client 10.0。采用sql server混合身份驗證。

// provider=sqlncli10.1;integrated security="";persist security info=false;user id=sa;initial catalog=master;data source=localhost;initial file name="";server spn=""

3. 測試結果

(1) 連接配接字元串使用“data source=localhost”,此時,優先使用1433端口,結果連接配接到localhost\mssqlserver。此時不需要sql server browser服務。

(2) 連接配接字元串使用“data source=localhost\sqlexpress,1433”,此時,優先使用1433端口,忽略了執行個體名稱,結果仍然連接配接到localhost\mssqlserver。此時不需要sql server browser服務。

(3) 連接配接字元串使用“data source=localhost\sqlexpress”,此時,優先使用動态偵聽,由sql server browser提供端口号,結果連接配接到localhost\sqlexpress。此時必須啟用sql server browser服務。

  關閉sql server browser服務,然後繼續使用連接配接字元串“data source=localhost\sqlexpress”,此時,将首先嘗試使用上一次sql server browser提供的端口号,是以仍然可以連接配接到localhost\sqlexpress。(難道是本機有緩存?)

(4) 保持停止sql server browser服務。重新開機 sqlexpress 執行個體,然後檢視tcp/ip屬性,發現本次使用1035端口。

  連接配接字元串使用“data source=localhost,1035”,此時,優先使用1035端口,直接連接配接到localhost\sqlexpress。

4. 結論

  如果指定了端口,就不需要sql server browser服務。

  如果同時指定了端口和執行個體名,則會忽略執行個體名稱,直接連接配接到指定的端口所對應的執行個體。  

繼續閱讀