SQL 虛擬伺服器的用戶端連線的描述

文章翻譯 文章翻譯
文章編號: 273673 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將概述一些基本概念關於 Microsoft SQL 虛擬伺服器用戶端連線。

其他相關資訊

重要這個區段、 方法或任務包含告訴您如何修改登錄的步驟。然而,如果您不當修改登錄,可能會發生嚴重的問題。因此,執行這些步驟時請務必小心。為加強保護,修改登錄之前,請務必將它備份起來。以後您就可以在發生問題時還原登錄。如需有關如何備份和還原登錄的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
322756如何備份和還原在 Windows 登錄


SQL 虛擬伺服器的用戶端行為

Microsoft 叢集伺服器 (MSCS) 提供可靠又健全的平台,可以建置重要的 SQL Server 應用程式。您不需要修改大部分的伺服器應用程式,以與 MSCS 搭配使用。不過,以交易為基礎的應用程式 (,例如資料庫伺服器,如 Microsoft SQL Server),這樣如果伺服器失敗,容錯移轉支援適當地將可避免遺失交易完整性,通常需要其他修改。開發用戶端應用程式使用 MSCS 作業是相當直接的方法。您必須設計應用程式和資料庫復原和錯誤檢查在心。

即使不使用 SQL Server 的叢集伺服器重新啟動時,伺服器會自動復原所有資料庫。若要確保資料庫被復原處於一致的應用程式狀態使用資料庫交易,以便正確且一致的狀態在資料庫中發生錯誤後移轉。當發生容錯移轉時,會不完整的交易應該復原交易時應該保留所有認可的交易的效果。

在容錯移轉,期間用戶端應用程式遺失其連線至 SQL Server 伺服器,而且必須重新連線到繼續處理。 如果用戶端連線至伺服器是沒有狀態 (Stateless),(比方說藉由使用 Microsoft 網際網路資訊伺服器 [IIS] 開發的應用程式是無狀態) 用戶端重新連線到伺服器,並繼續進行處理。除非用戶端和伺服器有一個常見的狀態 (比方說開啟的資料指標、 工作階段變數、 Transact-SQL 全域變數或 tempdb 中的資料),容錯移轉是不透明給用戶端。在這些情況下,您應該設計來告知使用者用戶端應用程式連線已任一個遺失,或重設或讓應用程式會自動重新建立與伺服器的連線。 復原尚未認可發生容錯移轉時任何交易。

討論區的用戶端與伺服器失敗的處理是甚至不使用叢集和虛擬伺服器的任何 SQL Server 用戶端應用程式的標準。錯誤檢查程序是叢集中的用戶端資料庫應用程式很類似。當叢集開始容錯移轉時,用戶端程式會收到錯誤訊息,在資料庫連接上。哪些用戶端程式正嘗試要執行於該時間取決於遇到的錯誤訊息。

如果 SQL Server 伺服器無法透過由叢集 管理,TCP 重設封包並不會傳送。如果 SQL Server 處理序會終止 (藉由 Kill.exe) 作業系統,重設封包會傳送。

如果應用程式並沒有指定查詢逾時參數或查詢逾時的零 (0),這可能會影響用戶端應用程式。

如果應用程式並沒有查詢等候逾時值,再開啟連線會保留在 ESTABLISHED 狀態之後發生錯誤後移轉。 未關閉開啟的連線,而沒有進一步的 TCP 封包會傳送那些連線從事實表示這些連接都已完全閒置。因為容錯移轉並未傳送任何 TCP 重設為用戶端應用程式的封包,那些開啟的連線等待查詢結果無限期地 (假設無限的查詢逾時),可能會導致連線停止回應 (擱置)。

若要解決這個問題從用戶端應用程式的觀點來看,將變更為有限數目的查詢逾時。

虛擬的資料庫失敗行為

當虛擬資料庫伺服器失敗時,等候用戶端傳回一個連線連結失敗的錯誤訊息。失敗的節點的叢集上資料庫是關機,而每次您設定的參數相同的節點上重新啟動:

Start\Programs\Administrative Tools (Common)\Cluster Administrator\Group\Failover\Properties
				
群組容錯移轉預設臨界值是 6 小時句號之前剩餘的節點發生錯誤後移轉的 10 個重新啟動。但是,SQL Server 重新啟動後者可透過 SQL Server 屬性,SQL Server 叢集資源上驗證、 該 SQL 伺服器上有預設臨界值的三個重新啟動 900 (以秒為單位) 且依預設不會影響群組的閾值。如果用戶端嘗試連線到伺服器,雖然復原資料庫,用戶端接收等待資料庫復原的錯誤訊息,並應該短暫延遲之後再試一次。

SQL Server 6.5 和 SQL Server 7.0 考量

SQL Server 6.5 與 SQL Server 7.0 方式先前的 < 虛擬資料庫失敗 > 一節所述的內容一模一樣。

當 SQL Server 7.0 會以虛擬伺服器執行 SQL Server 7.0 支援只有一個 IP 位址,但可能會在額外的連接埠上接聽,依照客戶設定。「 多重接聽 On 連接 TCP/IP 埠 」 主題,下列 「 Microsoft 知識庫 」 文件] 所述:
254321INF: 叢集的 SQL Server do's、 時不該做的事和基本的警告

Microsoft SQL Server 2000 考量

SQL Server 2000 具有某些行為差異的從 SQL Server 6.5 和 SQL Server 7.0 版本。

SQL Server 2000 的連接埠使用方式

在預設的情況下,具名執行個體會動態連接埠上接聽。 第一次伺服器啟動與連接埠設定為零 (0) 伺服器要求一個可用的連接埠號碼從作業系統,並且然後伺服器會在該連接埠上接聽。伺服器記錄這登錄,然後再使用相同的連接埠每一次。

如果伺服器設定為在動態連接埠上接聽,並且伺服器無法在啟動時動態連接埠上接聽,伺服器會選擇另一個連接埠。

如果您設定靜態連接埠在安裝期間或之後安裝程式使用伺服器網路公用程式則會在 TCP/IP 上接聽,如果這個連接埠正在使用中。

用戶端偵測連接埠號碼,以連接至具名執行個體或一個含有一個非預設的連接埠號碼的情況中。

連接資訊寫入 LastConnect"快取,在這個登錄機碼中:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\supersocketnetlib\lastConnect
您會發現項目為每個伺服器和已用來連接到它們在登錄中的方法。

用戶端會嘗試重複使用連接資訊在每個連線,除非它就會失敗而且 re-negotiates 新的資訊。這可能發生於以下情況: 如果連接埠號碼已變更,因為有人變更,或者它是已 re-assigned 因為到連接埠正在使用中的動態連接埠時。

中斷的連線

有三種方式可以中斷連線:
  1. 伺服器失敗 ; 處理序終止透過 killed (系統伺服器處理序 ID [spid] 殺死) 或存取違規 (AV) 或其他項目會導致作業系統或必要的服務失敗。
  2. 電腦硬體故障或遺失的電源。
  3. 伺服器關機。
這些中斷連線的每個展示區在用戶端電腦上看到不同的行為。
  1. 在伺服器失敗最情況下用戶端會立即收到連線中斷的錯誤訊息。您可以藉由連接與執行長的查詢的 OSQL 模擬這種行為,然後使用 [終止 SQL Server 處理序的 [殺了。用戶端就會結束與 ODBC 錯誤訊息。
  2. 機器失敗就變得更加複雜。行為可以變更稍微根據連線中斷偵測到的方式。

    如果用戶端讀取資訊的中間,連線遺失才能偵測到立即因為資料會停止。

    如果用戶端只等待結果,則行為會稍有不同。行為視 Alive 保留的用戶端電腦組態而定。

    在 Microsoft Windows 2000 保留 Alive 設定用戶端程式碼,以每個連線為基礎。預設情況下,Alive 保留設為 30 秒。這表示如果通訊端死偵測到在 30 秒和用戶端會收到錯誤訊息。在 Microsoft Windows NT 4.0 上保留 Alive 不能設定每個連線為基礎。保留 Alive 必須設定為整個電腦因此會影響到伺服器上的所有應用程式。

    登錄機碼所被參照的:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters KeepAliveTime\REG_DWORD 30000

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters KeepAliveInterval\REG_DWORD 1000
  3. 當啟始伺服器關機時,伺服器會等候一段時間來完成用戶端。不過,用戶端仍在執行伺服器殲敵執行緒在伺服器內。殺光執行緒也可能會導致不同的錯誤訊息用戶端上。錯誤訊息可以包含連接,中斷錯誤 ; 不過,大部分的情況下,您會看到這個錯誤訊息:
    「 時發生未知的錯誤,連線可能已經終止,伺服器 」。
    ODBC 原生錯誤的程式碼設定為零 (0),在這種情況下,但當做錯誤訊息傳回至用戶端。

?考

如需有關 SQL Server 2005 中的 SQL 虛擬伺服器的用戶端行為的詳細資訊,請造訪下列 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網路 (MSDN) 網站]:
http://msdn2.microsoft.com/en-us/library/ms189585.aspx

屬性

文章編號: 273673 - 上次校閱: 2007年12月4日 - 版次: 7.3
這篇文章中的資訊適用於:
  • Microsoft SQL Server 6.5 Enterprise Edition
  • Microsoft SQL Server 7.0 Enterprise Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard Edition
關鍵字:?
kbmt kbhowto kbsql2005cluster kbclientserver kbinfo KB273673 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:273673
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com