您目前已離線,請等候您的網際網路重新連線

如何設定 SQL Server 傾聽的特定連接埠

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:823938
結論
本文說明 Microsoft SQL Server 2008、SQL Server 2005,或 SQL Server 2000 中靜態和動態的連接埠配置。同時也會討論如何設定為使用靜態連接埠或動態連接埠的 SQL Server 的執行個體。
其他相關資訊
靜態通訊埠配置
如果您設定為使用靜態連接埠,SQL Server 的執行個體,而且您重新啟動 SQL Server 的執行個體,SQL Server 的執行個體將會只在指定的靜態連接埠上接聽。SQL Server 用戶端必須傳送的所有要求,只給靜態的 SQL Server 執行個體在其接聽的連接埠。

不過,如果執行個體的 SQL Server 是設定成接聽靜態連接埠,並在電腦正在執行的其他程式已使用指定的靜態連接埠,SQL Server 時不啟動,SQL Server 會接聽指定的靜態連接埠。

根據預設,SQL Server 的預設執行個會體接聽靜態連接埠 1433 SQL Server 用戶端的要求。因此,用戶端網路程式庫會假設用於連線至 SQL Server 的預設執行個體的連接埠 1433 或會為該用戶端電腦的全域預設連接埠。

如果是 SQL Server 的預設執行個體接聽通訊埠 1433年以外的連接埠,您必須下列其中一個定義伺服器別名名稱,或使用用戶端網路公用程式來變更全域預設通訊埠。不過,您也可以將預設的執行個體多個靜態通訊埠的 SQL Server 接聽。

如需有關如何設定 SQL Server,在多個靜態的 TCP 連接埠上接聽的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
294453如何將 SQL Server,設為在多個靜態的 TCP 連接埠上接聽
SQL Server 的預設執行個體不支援動態連接埠配置。然而,SQL Server 的具名執行個體支援靜態和動態連接埠的配置。預設情況下,SQL Server 具名執行個體接聽的動態連接埠。對於 SQL Server 具名執行個體,SQL Server 2008年]、 [SQL Server 2005 或 [SQL Server 解析通訊協定 (SSRP) 為 SQL Server 2000年的 SQL Server 瀏覽器服務皆使用轉譯連接埠,無論該連接埠是靜態或動態的執行個體名稱。「瀏覽器」服務或 SSRP 從未使用的 SQL Server 預設執行個體。

動態連接埠配置
只有 SQL Server 的具名執行個體可以使用動態連接埠配置處理序。在動態連接埠配置處理,當您第一次啟動 SQL Server 的執行個體連接埠設為零 (0)。因此,SQL Server 要求可用的通訊埠作業系統之間的數字。連接埠號碼配置給 SQL 之後儘速伺服器上,SQL Server 會開始在配置的連接埠上接聽。

配置的連接埠號碼已寫入 Windows 登錄中。每當您啟動具名的 SQL Server 的執行個體時,它會使用該配置的連接埠號碼。不過,在不太可能的情況下已經在電腦執行的其他程式正在使用該先前配置 (但非靜態) 連接埠號碼,當您啟動 SQL Server 時,SQL Server 會選取另一個連接埠。

當您第一次啟動 SQL Server 的具名執行個體時,SQL Server 就會開啟已啟動的第一次,如下所示的聆聽連接埠號碼:
  • 如果連接埠開啟時未發生任何錯誤,SQL Server 接聽連接埠。
  • 如果沒有開啟連接埠,且發生錯誤,則 SQL Server 的行為將如下所示:
    • 您會收到下列錯誤訊息:
      錯誤識別碼 10048 (WSAEADDRINUSE)
      當您收到這個錯誤訊息時,SQL Server 會判斷連接埠正在使用。然後,連接埠號碼會再次歸零 (0)。因此,會指定可用的連接埠。並且,SQL Server 會等待連接埠上的用戶端連線要求。
    • 如果您收到錯誤訊息,並不會提到令人 10048 的錯誤時,SQL Server 2000年會決定動作因此無法等候連接埠的連線要求。因此,不會開啟連接埠。
注意
  • 在 SQL Server 2005 中,當您收到下列錯誤訊息中,連接埠號碼設定為零 (0),並開啟。
    錯誤識別碼 10013 (WSAEACCES)
  • Windows Server 2003 中,或在 Windows XP 中,您可能會收到 10013 錯誤訊息,而不是 10048 的錯誤訊息,以獨佔模式使用正試圖開啟的連接埠時。
當 SQL Server 的執行個體時,使用動態連接埠配置,連線字串,建構在 SQL Server 用戶端不會指定 TCP/IP 的目的地連接埠,除非使用者或程式設計人員明確指定的連接埠。因此,SQL Server 用戶端程式庫會查詢 UDP 1434 通訊埠上的伺服器若要收集資訊,請參閱 SQL Server 的目的執行個體的相關資訊。當SQL Server 將傳回的資訊,SQL Server 用戶端程式庫會傳送要適當的 SQL Server 的執行個體的資料。

UDP 1434 通訊埠停用時,SQL Server 用戶端無法以動態方式判斷 SQL Server 的具名執行個體的連接埠。因此,SQL Server 用戶端可能無法連線到 SQL Server 的具名執行個體。在此情況下,SQL Server 用戶端必須指定動態配置的連接埠正在接聽的 SQL Server 2008年,SQL Server 2005 或 SQL Server 2000年具名執行個體的位置。

如需詳細資訊,按一下下面的文件編號,檢視 Microsoft 知識庫中的文件:
265808如何使用較早版本的 SQL Server 連線到 SQL Server


驗證 SQL Server 執行個體的連接埠設定
附註永遠使用預設的 SQL Server 的執行個體的靜態連接埠。

請先確認您的 SQL Server 執行個體已啟用 TCP/IP 通訊協定。然後,請從檢查 SQL Server 錯誤記錄檔中找到您的 SQL Server 執行個體目前 「 聆聽 」 的 TCP/IP 連接埠。此外,在 SQL Server 2005 和較新版本中,您可以檢查在 [SQL Server 組態管理員] 中的設定。如果您要在程式中查看 SQL 錯誤記錄檔從,請遵循下列步驟。

附註SQL Server 2000 中,使用 Query analyzer 中執行下列查詢的內容。
  1. 啟動 SQL Server Management Studio,,然後連線至 SQL Server 的執行個體。
  2. 執行下列查詢:
    Use master Go Xp_readerrorlog
  3. 結果 窗格中,找出下列文字 (其中 X.X.X.XSQL Server 的執行個體的 IP 位址,Y 是,SQL Server 正接聽 TCP/IP 連接埠):
    SQL server 正在接聽 X.X.X.X: Y
    附註:比方說,如果您找出 「 SQL server 正在聆聽 10.150.158.246: 1433 」 中的文字 結果 窗格中,10.150.158.246 是 IP 位址,SQL Server 和 1433年,SQL Server 的執行個體正接聽 TCP/IP 連接埠。
若要驗證的連接埠設定執行個體的 SQL Server 中,請依照下列步驟執行:
  1. 啟動 [登錄編輯程式]。
  2. 在 「 登錄編輯器 」 中,找出下列登錄機碼:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceName>\MSSQLServer\SuperSocketNetLib\Tcp
    附註如果您使用 SQL Server 2005,找出下列登錄子機碼:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<MSSQL.x>\MSSQLServer\SuperSocketNetLib\Tcp\IPAll
    請記下 TCPDynamicPorts 值和 TCPPort 的值。視您的連接埠配置方法而定這些值會出現,如下所示:
    • 靜態通訊埠配置
      如果您設定若要使用的 SQL Server 的執行個體靜態連接埠,而且您具有尚未重新啟動 SQL Server 的執行個體登錄值設定,如下所示:
      TCPDynamicPorts = 上次使用的連接埠
      TCPPort = 新的靜態連接埠,以供下次重新啟動;新的靜態連接埠您利用 「 伺服器網路公用程式 」 設定
      不過,如果您設定若要使用的 SQL Server 的執行個體靜態連接埠,而且您重新啟動的執行個體SQL Server 的登錄值設為如下所示:
      TCPDynamicPorts = 空白
      TCPPort = 新的靜態連接埠您利用 「 伺服器網路公用程式 」 設定
    • 動態連接埠配置
      如果您設定若要使用的 SQL Server 執行個體動態連接埠配置,而且您具有尚未重新啟動 SQL Server 的執行個體這些登錄值的設定,如下所示:
      TCPDynamicPorts = 空白
      TCPPort = 0
      不過,如果您設定若要使用動態連接埠配置,而且您的 SQL Server 的執行個體重新啟動的執行個體SQL Server 的登錄值設定,如下所示:
      TCPDynamicPorts = 目前使用的連接埠
      TCPPort = 目前使用的連接埠


設定要使用的靜態連接埠的 SQL Server 執行個體

SQL Server 2008 和 QL Server 2005

若要設定為使用靜態連接埠的 SQL Server 2008年或 SQL Server 2005 的執行個體,請依照下列步驟中所描述的How to: 將伺服器設定為接聽特定 TCP 通訊埠 (SQL Server 組態管理員) 上SQL Server 2005 線上叢書 》 或 SQL Server 2008年線上叢書 》 中的主題。

若要設定的靜態連接埠的特製化專用管理員連接 (DAC),您必須更新到您的執行個體的對應的登錄機碼。比方說,您的登錄機碼可能如下:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.X\MSSQLServer\SuperSocketNetLib\AdminConnection\Tcp
附註The "X" in "MSSQL.X"是版本號碼,表示執行個體的 SQL Server 2005 或 SQL Server 2008年的執行個體名稱的安裝位置的目錄。

SQL Server 2000

若要設定 SQL Server 的執行個體使用靜態連接埠,請遵循下列步驟:
  1. 啟動 [伺服器網路公用程式]。若要這樣做,請執行下列其中一項動作:
    • 按一下 開始指向程式指向 Microsoft SQL Server並然後按一下 伺服器網路公用程式.
    • 按一下 開始然後按一下 執行.在 開啟 方塊中輸入 svrnetcn.exe然後再按一下 [確定].
    [ 伺服器網路公用程式 對話方塊隨即出現。
  2. 伺服器網路公用程式 對話方塊中,按一下 一般 索引標籤。
  3. 這台伺服器上的執行個體 清單中,選取您的 SQL Server 的執行個體。

    附註如果 TCP/IP 通訊協定已停用,現在請將它啟用。若要這樣做,請按一下 TCP/IP已停用通訊協定 清單中,然後再按一下 啟用.
  4. 啟用通訊協定 清單中按一下 TCP/IP然後按一下屬性.
  5. 預設連接埠 方塊中,輸入靜態連接埠號碼,然後再按一下 [確定].

    附註您指定的靜態連接埠都不能相同您的 SQL Server 的執行個體目前聆聽的動態連接埠。針對例如,如果 SQL Server 的執行個體目前聆聽的動態 TCP/IP連接埠 1400,型別 1500 新的靜態連接埠。
  6. 按一下 [確定] 兩次。
  7. 重新啟動 SQL Server 的執行個體。
  8. 檢視的 SQL Server 錯誤記錄檔,以驗證 SQL Server 執行個體正在使用的靜態通訊埠。

    附註如果您擁有的叢集的 SQL Server 執行個體以及您遵循在叢集節點上指定的步驟,您可能會發現 TCPDynamicPorts 的登錄值,並 TCPPort 登錄值,在其他叢集節點上的仍保留舊的值。當您將 SQL Server 群組移動到相對應的叢集節點,並再帶SQL Server 線上叢集節點上,在叢集節點上的登錄值都將反映正確的值。
您可能想要設定 SQL 執行個體的靜態通訊埠若要將相同的連接埠數字,以使用之前的動態連接埠的伺服器。若要這樣做,請按照以下的步驟執行:
  1. 檢視 TCPDynamicPorts 的登錄值及 TCPPort 的登錄值,以判斷使用舊版的執行個體的 SQL Server 的動態連接埠號碼。
  2. 在 「 伺服器網路公用程式 」,請將靜態通訊埠設定為您在步驟 1 判定的登錄值不同的通訊埠編號。
  3. 重新啟動 SQL Server 的執行個體。
  4. 在 「 伺服器網路公用程式 」,請將靜態通訊埠設定為您在步驟 1 判定的登錄值。
  5. 重新啟動 SQL Server 的執行個體。


設定為使用動態連接埠的 SQL Server 的執行個體

SQL Server 2008 和 QL Server 2005

若要設定您的 SQL Server 2008年的執行個體或您要使用的動態連接埠的 SQL Server 2005 的執行個體,請使用類似的方法中所述"How to: 將伺服器設定為接聽特定 TCP 通訊埠 (SQL Server 組態管理員)"SQL Server 2008年線上叢書 》 或 SQL Server 2005 線上叢書 》 的主題。如需詳細資訊,請參閱 SQL Server 2008年線上叢書 》 或 SQL Server 2005 線上叢書 》 中的 [伺服器的網路設定] 主題。

SQL Server 2000

若要設定為使用動態連接埠的 SQL Server 執行個體,請依照下列步驟執行:
  1. 啟動 [伺服器網路公用程式]。若要這樣做,請執行下列其中一項動作:
    • 按一下 開始指向程式指向 Microsoft SQL Server並然後按一下 伺服器網路公用程式.
    • 按一下 開始然後按一下 執行.在 開啟 方塊中輸入 svrnetcn.exe然後再按一下 [確定].
    [ 伺服器網路公用程式 對話方塊隨即出現。
  2. 伺服器網路公用程式 對話方塊中,按一下 一般 索引標籤。
  3. 這台伺服器上的執行個體 清單中,選取您的 SQL Server 的執行個體。

    附註如果 TCP/IP 通訊協定已停用,現在請將它啟用。若要這樣做,請按一下 TCP/IP已停用通訊協定 清單中,然後再按一下 啟用.
  4. 啟用通訊協定 清單中按一下 TCP/IP然後按一下屬性.
  5. 預設連接埠 方塊中輸入0然後按一下 [確定].
  6. 按一下 [確定]然後按一下[確定] 一次。
  7. 重新啟動 SQL Server 的執行個體。
  8. 檢視的 SQL Server 錯誤記錄檔,來驗證 SQL Server 的執行個體是否使用動態通訊埠。

    附註如果您擁有的叢集的 SQL Server 執行個體以及您遵循在叢集節點上指定的步驟,您可能會發現 TCPDynamicPorts 的登錄值,並 TCPPort 登錄值,在其他叢集節點上的仍保留舊的值。當您將 SQL Server 群組移動到相對應的叢集節點,並再帶SQL Server 線上叢集節點上,在叢集節點上的登錄值都將反映正確的值。


疑難排解
如果 SQL Server 用戶端無法存取的執行個體SQL Server 設定以使用之後靜態的 TCP/IP 連接埠,可能會有下列原因所致:
  • A防火牆可能封鎖了指定的 TCP/IP 連接埠。
    如果 SQL Server 的執行個體目前聆聽的連接埠由您的防火牆封鎖,則連線將會失敗。如需有關如何設定您的防火牆,若要使用 SQL Server 的資訊,請參閱 SQL Server 2008年線上叢書 》 中的 [ Windows 防火牆設定為允許 SQL Server 存取] 主題。雖然本主題是適用於 SQL Server 2008,大部分的資訊亦適用於 SQL Server 2005 和 SQL Server 2000。

    如需詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
    287932透過防火牆進行通訊到 SQL 所需的 TCP/IP 連接埠號碼
    318432 錯誤:無法透過防火牆連線到叢集的具名執行個體
    968872 如何在 Windows Server 2008 上的 SQL Server 的開啟防火牆連接埠
  • 另一個程式可能已經使用指定的 TCP/IP 連接埠。
    如果另一個程式已經在使用指定的 TCP/IP 連接埠,連接埠無法使用 SQL Server 和 SQL Server 的執行個體用戶端可能無法連線到 SQL Server 的執行個體。

    這問題只設定為使用的 SQL Server 的執行個體靜態的 TCP/IP 連接埠。不會發生這個問題,這是 SQL Server 執行個體若要使用動態連接埠配置設定。在動態連接埠配置中,如果另一個程式已經使用指定的 TCP/IP 連接埠,當您啟動的 SQL 執行個體伺服器上,SQL 的執行個體伺服器會選取新的連接埠。

    如需詳細資訊,按一下下面的文件編號,檢視 Microsoft 知識庫中的文件:
    293107若要透過連接埠 1433年的 SQL Server 或 SQL Server 正在接聽的連接埠的用戶端無法進行通訊
  • 具名執行個體的 SQL Server 正在接聽連接埠 1433年。
    如果正接聽連接埠 1433,Microsoft OLE DB 提供者的 SQL Server 具名執行個體的 SQL Server (提供者 = SQLOLEDB) 和 SQL Server ODBC 驅動程式 (驅動程式 = {SQL Server}) 可能無法連線到伺服器。當省略時的執行個體名稱,並從連接字串的連接埠號碼,就會發生這種無法連線。如果未指定任何連接埠號碼,則驅動程式會驗證伺服器的執行個體名稱。如果伺服器執行個體名稱不是預設執行個體,MSSQLSERVER,連線不會成功。若要啟用成功的連線,您必須指定執行個體名稱或通訊埠編號連接字串中,或在 [SQL 別名。

    注意
    • 我們不建議您有具名執行個體接聽連接埠 1433。
    • 其他提供者,例如 System.Data.SqlClient 和 SQL 的原生用戶端 (提供者 = SQLNCLI)、 不執行執行個體名稱檢查而且成功連線。
参考
如需詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
286303SQL Server 2000年網路程式庫的動態連接埠在偵測期間的行為
273673 SQL 虛擬伺服器的用戶端連線的說明
328383 當用戶端電腦嘗試連線到 SQL Server 的執行個體時,SQL Server 用戶端可能會變更通訊協定
如需有關如何設定 SQL Server 在不同的連接埠上不同的 IP 位址上接聽的詳細資訊,請參閱如何設定在不同的連接埠上不同的 IP 位址上接聽的 SQL 伺服器? 可以在下列的 Microsoft SQL Server 支援部落格網站上找到該主題:

警告:本文為自動翻譯

內容

文章識別碼:823938 - 最後檢閱時間:07/16/2013 08:03:00 - 修訂: 14.1

Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Workgroup

  • kbsqlsetup kbsql2005cluster kbconnectivity kbupdate kbsqlclient kbnetwork kbfirewall kbconfig kbregistry kbhowtomaster kbmt KB823938 KbMtzh
意見反應