狀況
您使用 SQL Server 2005 合併複寫或 SQL Server 2008年合併複寫使用 Web 同步處理基礎的 「 訂閱者 」。記憶體遺漏,就會發生重複的同步處理之後,您可能會收到 「 記憶體不足 」 錯誤在一段時間之後。當主機處理序不會重新啟動一段時間,例如當搭配-連續的參數使用 「 合併代理程式 」 (Replmerg.exe) 時,這就明顯或何時會套用至 「 代理程式 」 的代理程式設定檔中指定了連續的參數。RMO 應用程式或服務您開發應用程式執行數天,而不關閉時,在迴圈中執行同步處理,也可以影響這個問題。
原因
在每次同步處理時,會遺漏數個內部的物件。
解決方案
SQL Server 2005 Service Pack 3
SQL Server 2005 的 Service Pack 3 的第一次這個問題的修正程式釋放累積的更新 6] 中。如需有關此累積更新套件的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件︰
974648累計更新套件 6,SQL Server 2005 的 Service Pack 3注意因為組建是累計的每個新的修正程式版本會包含所有的 hotfix,和先前的 SQL Server 2005 隨附的所有安全性修正都修正版本。Microsoft 建議您考慮將套用最新的修正程式版本,其中包含此 hotfix。如需詳細資訊,按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
960598的 SQL Server 2005 建立的 SQL Server 2005 的 Service Pack 3 發行之後所發行的。
Microsoft SQL Server 2005年的 hotfix 會建立特定的 SQL Server service pack。您必須將 SQL Server 2005 的 Service Pack 3 hotfix 套用至的 SQL Server 2005 的 Service Pack 3 安裝。根據預設,SQL Server service pack 中所提供的任何 hotfix 併入下一步的 SQL Server service pack。
SQL Server 2008年的發行版本
重要如果您執行 SQL Server 2008年的發行版本,您必須安裝此修正程式。
這個問題的修正程式首次發表中累積的更新 8。如需有關如何取得此累積更新套件,SQL Server 2008 的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件︰
975976累計 SQL Server 2008 中更新套件 8注意因為組建是累計的每個新的修正程式版本會包含所有的 hotfix,並隨附於先前的 SQL Server 2008年所有安全性修正程式會都修正版本。我們建議您考慮將套用最新的修正程式版本,其中包含此 hotfix。如需詳細資訊,按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
SQL Server 2008年建置 SQL Server 2008年發行之後所發行的956909
SQL Server 2008 Service Pack 1
重要如果您執行 SQL Server 2008 Service Pack 1,您必須安裝此修正程式。
SQL Server 2008 Service Pack 1 的第一次這個問題的修正程式釋放累積的更新 5] 中。如需有關此累積更新套件的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件︰
975977累計更新套件 5,SQL Server 2008 Service Pack 1注意因為組建是累計的每個新的修正程式版本會包含所有的 hotfix,並隨附於先前的 SQL Server 2008年所有安全性修正程式會都修正版本。Microsoft 建議您考慮將套用最新的修正程式版本,其中包含此 hotfix。如需詳細資訊,按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
SQL Server 2008年建置 SQL Server 2008 Service Pack 1 發行之後所發行的970365
Microsoft SQL Server 2008 hotfix 會建立特定的 SQL Server service pack。您必須將 SQL Server 2008 Service Pack 1 hotfix 套用至的 SQL Server 2008 Service Pack 1 安裝。根據預設,SQL Server service pack 中所提供的任何 hotfix 併入下一步的 SQL Server service pack。
狀態
Microsoft 已確認這是<套用>一節所列出的 Microsoft 產品的問題。
因應措施
若要解決這個問題,請使用下列方法之一︰
方法 1
如果您使用 「 合併代理程式 」 以連續模式,定期,停止 「 合併代理程式處理序 」,然後重新啟動它。
例如,您在五天後,收到 「 記憶體不足 」 錯誤,而您合併代理程式 」 排程為作業。然後,您可以排定新的 SQL Server 代理程式工作,以呼叫sp_stop_job ,後面接著指定您合併代理程式作業名稱,將循環受影響的程序每隔五天的sp_start_job 。當您停止合併代理程式 」 (Replmerg.exe) 的程序時,就會釋放處理序的記憶體空間內的任何遺漏的記憶體。
如需有關使用-v 連續參數上 「 合併代理程式 」,請參閱下列 Microsoft 開發人員網路 (MSDN) 網站︰
http://msdn.microsoft.com/en-us/library/ms147839.aspx
sp_stop_job http://msdn.microsoft.com/en-us/library/ms182793(SQL.90).aspx
sp_start_job http://msdn.microsoft.com/en-us/library/ms186757(SQL.90).aspx
方法 2
如果您使用 「 合併代理程式 」,從工作時,您無法使用額外的步驟,而不依賴於連續的參數來設定內工作的手動重複循環邏輯。而不是一個合併代理程式處理內部迴圈不限次數持續為作業步驟重複一次每分鐘例如定期排程 「 合併代理程式 」。處理程序將會結束之間重試次數,這會釋放任何遺漏的記憶體。
編輯工作,以便在之間暫停的迴圈中重複的步驟重複 「 合併代理程式。
-
[3] 的步驟之後"偵測非記錄式代理程式關機]"新增新的 [4] 步驟名為 [無限重複重試]。將類型設為 TSQL 和命令,以"waitfor 延遲 ' 0: 00:05' 」,此 TSQL 延遲將提供 5 的第二個暫停您可以設定為一種 「 合併代理程式 」 將暫停執行之間的簡略,並不會經常執行的輪詢間隔。在 [進階] 索引標籤上指定 [上成功執行] 為 「 移至步驟 [2] 的執行代理程式 」 和 「 失敗動作 」 為"移至步驟 [2] 執行代理程式 」。
-
編輯 [2] 的步驟執行代理程式以確保迴圈 [4] 的步驟為止。步驟 [2] 的 [進階] 索引標籤上設定上成功時] 動作,"請跳至步驟: [4] 的重試無限迴圈 」,並設定 [到下一步 」 的 On 失敗動作
-
編輯 [3] 的步驟 「 偵測非記錄式代理程式關機 」 以確定在 [4] 步驟中的迴圈為止。在步驟 [3] [進階] 索引標籤中,設定在成功時] 動作,「 移到下一步 」。您也可以決定是否要讓 [3] 的步驟失敗時的處理設定為 「 移到下一步 」 或 「 結束作業回報失敗 」。如果它被設定為結束,它會顯示複寫監視器] 和 [工作監視器中的工作失敗。如果它被設定到第四個迴圈步驟失敗時,可能會無限期,重新執行 「 合併代理程式 」,並無限期地記錄錯誤。
方法 3
同樣地如果您使用 RMO 應用程式呼叫MergeSynchronizationAgent.Synchronize()方法的同步處理在迴圈中的 「 訂閱者 」 資料庫時,停止並重新啟動處理序定期釋放任何由於發生此問題遺漏的記憶體。
如需有關這個物件和方法的詳細資訊,請參閱下列 Microsoft 開發人員網路 (MSDN) 網站︰ http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.replication.mergesynchronizationagent.synchronize(SQL.90).aspx
參考
如需有關如何使用-連續的參數在 「 合併代理程式 」,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站︰
http://msdn.microsoft.com/en-us/library/ms147839.aspx
如需有關sp_stop_job預存程序的詳細資訊,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站︰
http://http://msdn.microsoft.com/en-us/library/ms182793(SQL.90).aspx
如需有關sp_start_job預存程序的詳細資訊,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站︰
http://msdn.microsoft.com/en-us/library/ms186757(SQL.90).aspx
如需有關如何取得 SQL Server 2005 的 Service Pack 3,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文︰
如何取得最新的 service pack,SQL Server 2005 的913089
如需有關 SQL Server 2005 Service Pack 3 (SP3) 中的新功能,以及有關 SQL Server 2005 SP3 中改良的詳細資訊,請造訪下列 Microsoft 網站︰
http://go.microsoft.com/fwlink/?LinkId=131442SQL Server 更新的命名結構描述的詳細資訊,如按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件︰
822499新命名的結構描述的 Microsoft SQL Server 軟體更新套件
如需有關軟體更新術語的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
編號 824684用來描述 Microsoft 軟體更新標準術語的說明