Update: Fehlermeldungen Out of Memory beim Verwenden von Mergereplikation mit Synchronisierung von SQL Server 2005 oder SQL Server 2008

Problembeschreibung

SQL Server 2005-Mergereplikation bzw. SQL Server 2008 Mergereplikation mit einer Synchronisierung von Abonnenten basiert. Ein Speicherverlust tritt nach wiederholten Synchronisationen und möglicherweise Fehlermeldungen "nicht genügend Arbeitsspeicher" nach einiger Zeit. Dadurch bemerkbar beim Neustart des Hostprozess nicht lange, wie wenn der Merge-Agent (Replmerg.exe) mit dem kontinuierlichen Schalter verwendet wird oder wenn der kontinuierliche Parameter im Profil Agenten, der auf den Agenten angewendet wird. Außerdem kann hierdurch beeinträchtigt ein RMO Anwendung oder ein Dienst, die Sie entwickelt, das bei der Anwendung für mehrere Tage ohne Synchronisierung in einer Schleife ausgeführt.

Ursache

Bei jeder Synchronisierung werden mehrere interne Objekte einen Speicherverlust.

Problemlösung

SQL Server 2005 Servicepack 3


Die Fehlerbehebung für dieses Problem wurde erstmals im kumulativen Update 6 für SQL Server 2005 Service Pack 3 veröffentlicht. Für weitere Informationen zu diesem kumulativen Update-Paket, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
974648 kumulative Updatepaket 6 für SQL Server 2005 Service Pack 3
Hinweis Da diese Builds kumulativ sind, enthält jede neue Version alle Hotfixes und alle Sicherheitsupdates, die in früheren SQL Server 2005 enthalten waren. Microsoft empfiehlt, dass Sie prüfen die neueste Update-Version, die diesen Hotfix enthält. Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
960598 der SQL Server 2005 erstellt, die nach der Freigabe von SQL Server 2005 Service Pack 3 veröffentlicht wurden.
Microsoft SQL Server 2005-Hotfixes sind für bestimmte SQL Server Servicepacks erstellt. Sie müssen SQL Server 2005 Service Pack 3-Hotfix eine Installation von SQL Server 2005 Service Pack 3 anwenden. Standardmäßig ist jeder Hotfix, der in einem SQL Server Servicepack bereitgestellt wird, in einem nächsten Servicepack für SQL Server enthalten.

Die Version von SQL Server 2008

Wichtig Wenn Sie die Version von SQL Server 2008 ausführen, müssen Sie dieses Update installieren.

Die Fehlerbehebung für dieses Problem wurde erstmals im kumulativen Update 8 veröffentlicht. Weitere Informationen zu diesem kumulativen Updatepaket für SQL Server 2008 finden Sie im folgenden Artikel der Microsoft Knowledge Base:
975976 kumulative Updatepaket 8 für SQL Server 2008
Hinweis Da diese Builds kumulativ sind, enthält jede neue Veröffentlichung alle Hotfixes und alle die Sicherheitsupdates, die in den vorherigen SQL Server 2008 Fix-Veröffentlichung enthalten waren. Wir empfehlen Sie prüfen die neueste Update-Version, die diesen Hotfix enthält. Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
956909 die SQL Server 2008 builds, die nach der Freigabe von SQL Server 2008

SQL Server 2008 Servicepack 1

Wichtig Wenn Sie SQL Server 2008 Service Pack 1 ausführen, müssen Sie dieses Update installieren.


Die Fehlerbehebung für dieses Problem wurde zuerst im kumulativen Update 5 für SQL Server 2008 Service Pack 1 veröffentlicht. Für weitere Informationen zu diesem kumulativen Update-Paket, klicken Sie auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
975977 kumulative Updatepaket 5 für SQL Server 2008 Service Pack 1
Hinweis Da diese Builds kumulativ sind, enthält jede neue Veröffentlichung alle Hotfixes und alle die Sicherheitsupdates, die in den vorherigen SQL Server 2008 Fix-Veröffentlichung enthalten waren. Microsoft empfiehlt, dass Sie prüfen die neueste Update-Version, die diesen Hotfix enthält. Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
970365 die SQL Server 2008 builds, die nach der Freigabe von SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008-Hotfixes sind für bestimmte SQL Server Servicepacks erstellt. Sie müssen SQL Server 2008 Service Pack 1-Hotfix eine Installation von SQL Server 2008 Service Pack 1 anwenden. Standardmäßig ist jeder Hotfix, der in einem SQL Server Servicepack bereitgestellt wird, in einem nächsten Servicepack für SQL Server enthalten.

Status

Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Eigenschaften“ aufgeführt sind.

PROBLEMUMGEHUNG

Um dieses Problem zu umgehen, verwenden Sie eine der folgenden Methoden:

Methode 1

Bei Verwendung einen Merge-Agent im kontinuierlichen Modus regelmäßig den Merge-Agent-Prozess beenden und erneut starten.

Beispielsweise Fehlermeldungen "nicht genügend Arbeitsspeicher" nach fünf Tagen und der Merge-Agent als Auftrag geplant ist. Dann planen Sie eine neue SQL Server-Agent-Auftrag Aufrufen Sp_stop_job Sp_start_job Angabe der Merge-Agent Auftrag, die betroffenen Prozess alle fünf Tage Zyklus gefolgt. Beim Abbrechen der Merge-Agent (Replmerg.exe) werden verlorene Speicher im Prozessspeicherplatz freigegeben.

Weitere Informationen zur Verwendung von dem kontinuierlichen Schalter auf der Merge-Agent finden Sie im Microsoft Developer Network (MSDN)-Website:

Methode 2

Bei Verwendung den Merge-Agent von einem Auftrag konnte Sie manuelle Schleifenlogik in den Auftrag mithilfe zusätzliche Schritte statt fortlaufende Parameter konfigurieren. Statt intern Schleifen ein Merge-Agent-Prozess immer, Planen der Merge-Agent als ein regelmäßig, beispielsweise einmal pro Minute wiederholt Auftragsschritt. Zwischen Wiederholungsversuchen wird der Prozess beendet und das verlorene Speicher frei.
Bearbeiten der Merge-Agent Auftrag, in einer Schleife mit einer Pause zwischen die Schritte wiederholen wiederholt.
  1. Nach Schritt [3] "Erkennt nicht protokollierte Agent Herunterfahren" Hinzufügen eines neuen Schritts [4] mit dem Namen "Unbegrenzten Wiederholungsschleife." TSQL und der Befehl festlegen "Waitfor Delay" 0: 00:05'", diese Verzögerung TSQL bieten eine 5 Sek. Pause die können als ein Abrufintervall so, dass der Merge-Agent zwischen Pause und nicht ständig ausgeführt wird. Geben Sie auf der Registerkarte Erweitert "Auf erfolgreiche Aktion" als "Gehe zu [2] ausführen Agent" und "Aktion bei Fehler" als "Go to Run Agent Schritt [2]".
  2. Bearbeiten Sie Schritt [2]-Agent ausführen um sicherzustellen, dass die Schleife Schritt [4] erreicht wird. Legen Sie auf der Registerkarte Erweitert des Schritts [2] Aktion erfolgreich auf "Gehe zu Schritt: [4] unbegrenzten Schleife" und die Aktion bei Fehler "Gehe zum nächsten Schritt".
  3. Schritt [3] bearbeiten "Erkennen nicht protokollierte Agent Herunterfahren" sicherstellen, dass die Schleife in Schritt [4] erreicht wird. Legen Sie auf der Registerkarte Erweitert des Schritts [3] auf erfolgreiche Aktion "Gehe zum nächsten Schritt". Sie können auch, wenn der Schritt [3] auf Fehler festgelegt werden soll "Zum nächsten Schritt gehen" oder "Beenden des Auftrags mit Fehler." Wenn es zum Beenden konfiguriert ist, werden die Auftragsfehler Replication Monitor und der Auftrag angezeigt. Bei einem Fehler im vierten Schritt Schleife zu konfiguriert ist, der Merge-Agent kann unbegrenzt erneut und Fehler protokolliert unbegrenzt.

Methode 3

Auch wenn Sie ein RMO die Abonnentendatenbank in einer Schleife synchronisiert die MergeSynchronizationAgent.Synchronize() -Methode aufrufen Anwendung, beenden Sie und starten Sie den Prozess in regelmäßigen Abständen, um Speicher freizugeben, der wegen dieses Problems offengelegt werden.
Weitere Informationen zu diesem Objekt und die Methode finden Sie im Microsoft Developer Network (MSDN)-Website: http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.replication.mergesynchronizationagent.synchronize(SQL.90).aspx

Referenzen

Weitere Informationen zur Verwendung der kontinuierlichen Option auf der Merge-Agent finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Website:
Weitere Informationen zu Sp_stop_job gespeicherten Prozedur finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Website:
Weitere Informationen zu Sp_start_job gespeicherten Prozedur finden Sie auf der folgenden Microsoft Developer Network (MSDN)-Website:
Weitere Informationen zum Beziehen von SQL Server 2005 Service Pack 3 finden im folgenden Artikel der Microsoft Knowledge Base:

913089 so erhalten Sie das neueste Servicepack für SQL Server 2005

Weitere Informationen zu den neuen Features in SQL Server 2005 Service Pack 3 (SP3) und die Verbesserung der SQL Server 2005 SP3 finden Sie auf der folgenden Microsoft-Website:Weitere Informationen zum Benennungsschema für SQL Server-Updates klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:

Neues Benennungsschema für Microsoft SQL Server-Software 822499 Pakete aktualisieren

Um weitere Informationen zur Terminologie für Softwareupdates zu erhalten, klicken Sie auf die folgende Artikelnummer, um den Artikel der Microsoft Knowledge Base anzuzeigen:
824684 Beschreibung der Standardterminologie, die zum Beschreiben von Microsoft-Softwareupdates verwendet wird.
Eigenschaften

Artikelnummer: 974660 – Letzte Überarbeitung: 13.01.2017 – Revision: 1

Feedback