徵狀
假設您在執行 Windows Server 2008 或 Windows Server 2008 R2 的電腦上安裝 Microsoft SQL Server 2008 或 Microsoft SQL Server 2008 R2。 當應用程式使用 Microsoft SQL Server Native Client 10.0 連線至 SQL Server 2008 或 SQL Server 2008 R2 時,您會間歇收到「未產生排程」錯誤。 注意: 在 SQL Server 2008 或 SQL Server 2008 R2 錯誤記錄檔中,會記錄每個「未產生的排程程式」錯誤。此外,SQL Server 也會在間歇性地停止回應。 若要解決此問題,您可能必須重新開機 SQL Server。 注意事項
-
此熱修復程式適用于 SQL 原生用戶端和 SQL Server enginee。
-
如果您已安裝 SQL Server 2008 Service Pack 2 (SP2),則不會發生「未產生排程」錯誤,且 SQL Server 2008 不會停止回應。 不過,您可能會收到類似以下的錯誤訊息:
錯誤碼 26073-//ErrorFormat: TCP 連線已關閉,但 SQL Server 的子進程可能會保留連線的通訊端複本
原因
之所以發生這個問題,是因為 SQL Server 原生用戶端10.0 不正確處理通訊端上的 TCP close 呼叫。
解決方案
注意
如果您最近根據安全公告 MS11 (049)套用 SQL Server GDR 修正程式,則無法套用本文所述的累積更新。 當您嘗試使用累積更新設定來套用修正程式時,您會收到類似以下的錯誤訊息:
已將具有較高版本的 SQL Server 更新安裝在 SQL Server 實例 <實例名稱>,所以無法套用目前的 SQL server 更新。 已安裝的 SQL Server 更新版本是具有 KB2494089 的 GDR 10.2.4064.0 (10.2.4310.0),而目前的 SQL Server 更新則10.2.4272.0 使用 KB2467239。
在這種情況下,除了修正 MS11-049 問題之外,您還必須針對此 KB 文章中提及的問題,套用包含修正程式的 GDR 套件。 若要找出適用于您的 SQL Server 組建範圍的相關 GDR 和 QFE 套件,請參閱下列安全公告的 [常見問題] 區段:
http://www.microsoft.com/technet/security/bulletin/MS11-049.mspx例如,如果您執行的是 SQL Server 2008 Service Pack 2,且您已為 KB2494089 套用 GDR 熱修復程式,以取得 KB2491214 的修正程式,您必須套用 QFE KB2494094 更新。
累積更新資訊
若要解決此問題,請針對 SQL Server 以及在電腦上執行的 Windows Server 套用適當的更新。 注意: 您可能會在使用 SQL Server 原生用戶端和函數(例如 CreateProcess 函數)的用戶端應用程式中遇到這個問題,以建立新的子進程。 在這種情況下,您必須為 Windows Server 和 SQL Server 套用這兩個熱修復程式。
SQL Server 更新
SQL Server 2008 R2 的累積更新套件6
此問題的修正程式是在累積更新6中第一次發行。如需有關如何取得 SQL Server 2008 R2 累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2489376 SQL Server 2008 R2 的累積更新套件6 注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 R2 修正版本中所包含的所有修復程式及所有安全性修正程式。 我們建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
981356 在發行 SQL Server 2008 R2 之後發行的 SQL Server 2008 R2 組建Sql server 2008 的累積更新套件 2 Service pack 2 此問題的修正程式在 SQL Server 2008 Service Pack 2 的累積更新2中第一次發行。如需此累積更新套件的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
2467239 SQL Server 2008 的累積更新套件 2 Service Pack 2注意: 因為組建是累加的,所以每個新的修正程式版本都包含先前 SQL Server 2008 修正版本中所包含的所有修復程式及所有安全性修正程式。 Microsoft 建議您考慮套用包含此熱修復程式的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:
2402659 在發行 SQL Server 2008 Service Pack 2 之後發行的 SQL Server 2008 組建 Microsoft SQL Server 2008 修復程式是針對特定的 SQL Server service pack 建立的。 您必須將 SQL Server 2008 Service Pack 2 修補程式套用至 SQL Server 2008 Service Pack 2 的安裝。 根據預設,SQL Server service pack 中提供的任何熱修復程式都包含在下一個 SQL Server service pack 中。
Windows Server 更新
Windows Server 2008 R2 的修補程式
976932 Windows 7 和 Windows Server 2008 R2 Service Pack 1 的相關資訊
Windows Server 2008 的修補程式
2398202 當應用程式關閉通訊端連線或關閉時,應用程式可能會在 Windows Server 2008 或 Windows Vista 中停止回應
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。
因應措施
重要 此節、方法或工作包含的步驟可告訴您如何修改註冊表。不過,如果您不正確地修改註冊表,可能會發生嚴重問題。因此,請務必仔細遵循這些步驟。若要增加保護,請在修改前先備份註冊表。然後,如果發生問題,您可以還原註冊表。如需如何備份及還原註冊表的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
322756 如何在 Windows 中備份及還原登錄若要解決此問題,請在MSSQLServer的登錄機碼中新增SuperSocketNetlib\Tcp\TcpAbortiveClose值。若要這樣做,請執行下列步驟:
-
開啟 [登錄編輯程式]。 若要這樣做,請針對您的作業系統使用適當的方法:
-
在 Windows Vista 中,按一下 [開始],在 [開始搜尋] 方塊中輸入regedit ,然後按 enter。
-
在 Windows XP 中,按一下 [ 開始],按一下 [ 執行],輸入 Regedit,然後按一下 [確定]。
-
-
找出下列登錄子機碼,然後按一下它。
-
針對 SQL Server 2008 或 SQL Server 2008 R2 的預設實例,請按一下以下登錄子機碼:
HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10。MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Tcp\
-
針對 SQL Server 2008 或 SQL Server 2008 R2 的命名實例,請按一下以下登錄子機碼:
HKEY_LOCAL_MACHINE \SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10。(InstanceName) \MSSQLServer\SuperSocketNetLib\Tcp\
-
-
在 [ 編輯 ] 功能表上,指向 [ 新增],然後按一下 [ DWORD 值]。
-
輸入 TcpAbortiveClose,然後按 enter。
-
按一下 [ 編輯 ] 功能表上的 [ 修改]。
-
按一下 [小數位],然後在 [值資料] 方塊中輸入1 。
-
關閉登錄編輯程式。
-
重新開機 SQL Server。
參考
如需有關如何安裝 SQL Server 原生用戶端的詳細資訊,請造訪下列 Microsoft 開發人員網路(MSDN)網站:
如何安裝 SQL Server 原生用戶端如需有關 SQL Server 的增量服務模型的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
935897 您可以從 SQL Server 團隊取得增量服務模型,以提供已報告問題的修補程式如需 SQL Server 更新命名架構的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
822499Microsoft SQL Server 軟體更新套件的新命名架構如需軟體更新術語的詳細資訊,請按一下下列文章編號,以查看 Microsoft 知識庫中的文章:
824684 描述 Microsoft 軟體更新所使用的標準術語說明