Poprawka: Komunikaty błędu braku pamięci podczas replikacji scalania z synchronizacji sieci Web w programie SQL Server 2005 lub SQL Server 2008

Dotyczy: Microsoft SQL Server 2005 Standard EditionMicrosoft SQL Server 2005 Enterprise EditionMicrosoft SQL Server 2005 Developer Edition

Objawy


Użyj replikacji scalania programu SQL Server 2005 lub SQL Server 2008 scalania replikacji z synchronizacji sieci Web na podstawie subskrybenta. Występuje przeciek pamięci po synchronizacji powtarzające się i "Brak pamięci" błędy mogą się pojawić po upływie pewnego czasu. To staje się zauważalne podczas procesu hosta nie zostanie ponownie uruchomiony przez długi czas, na przykład gdy używany jest Agent korespondencji seryjnej (Replmerg.exe) z przełącznikiem ciągłe lub gdy określono parametr ciągły w profilu agenta, który jest stosowany do agenta. Ten problem może również wpływać na RMO aplikacja lub usługa, która zostanie opracowany uruchamiana synchronizacja w pętli, gdy aplikacja zostanie uruchomiona przez kilka dni bez zamykania okna.

Przyczyna


Podczas każdej synchronizacji są przecieku kilka wewnętrzne obiekty.

Rozwiązanie


SQL Server 2005 z dodatkiem Service Pack 3


Poprawkę dotyczącą tego problemu został wydany w zbiorczej aktualizacji 6 dla dodatku Service Pack 3 dla programu SQL Server 2005. Aby uzyskać więcej informacji na temat tego pakietu aktualizacji zbiorczej kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
974648 skumulowany pakiet 6 aktualizacji dla dodatku Service Pack 3 dla programu SQL Server 2005
Uwaga Ponieważ są zbiorcze, każde nowe wydanie zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniego programu SQL Server 2005 ustalić wersji. Firma Microsoft zaleca, aby rozważyć zastosowanie najnowszej wersji poprawki, zawierający tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
960598 SQL Server 2005 tworzy wydane po wydaniu dodatku Service Pack 3 dla programu SQL Server 2005.
Microsoft SQL Server 2005 poprawki są tworzone dla określonych dodatków service Pack dla programu SQL Server. Do instalacji dodatku Service Pack 3 dla programu SQL Server 2005, należy zastosować poprawkę dodatku Service Pack 3 dla programu SQL Server 2005. Domyślnie wszystkie poprawki, która jest dostępna w dodatku service pack dla programu SQL Server znajduje się w następnym dodatku service pack dla programu SQL Server.

Wersja programu SQL Server 2008

Ważne Jeśli używasz wersji programu SQL Server 2008, należy zainstalować tę poprawkę.

Poprawkę dotyczącą tego problemu został wydany 8 aktualizacja zbiorcza. Aby uzyskać więcej informacji dotyczących sposobu uzyskiwania tego pakietu aktualizacji zbiorczej dla programu SQL Server 2008 kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
975976 skumulowany pakiet 8 aktualizacji dla programu SQL Server 2008
Uwaga Ponieważ są zbiorcze, każde nowe wydanie zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniego programu SQL Server 2008 Release. Firma Microsoft zaleca, aby rozważyć zastosowanie najnowszej wersji poprawki, zawierający tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
956909 program SQL Server 2008 buduje wydane po wydaniu programu SQL Server 2008

Dodatek Service Pack 1 dla programu SQL Server 2008

Ważne Jeśli używasz dodatku Service Pack 1 dla programu SQL Server 2008, należy zainstalować tę poprawkę.


Poprawkę dotyczącą tego problemu został wydany w zbiorczej aktualizacji 5 dla programu SQL Server 2008 z dodatkiem Service Pack 1. Aby uzyskać więcej informacji na temat tego pakietu aktualizacji zbiorczej kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
975977 skumulowany pakietu aktualizacji 5 dla programu SQL Server 2008 z dodatkiem Service Pack 1
Uwaga Ponieważ są zbiorcze, każde nowe wydanie zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniego programu SQL Server 2008 Release. Firma Microsoft zaleca, aby rozważyć zastosowanie najnowszej wersji poprawki, zawierający tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
970365 SQL Server 2008 buduje wydane po wydaniu dodatku Service Pack 1 dla programu SQL Server 2008
Microsoft SQL Server 2008 poprawki są tworzone dla określonych dodatków service Pack dla programu SQL Server. Do instalacji programu SQL Server 2008 z dodatkiem Service Pack 1, należy zastosować poprawkę dodatku Service Pack 1 dla programu SQL Server 2008. Domyślnie wszystkie poprawki, która jest dostępna w dodatku service pack dla programu SQL Server znajduje się w następnym dodatku service pack dla programu SQL Server.

Stan


Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.

Obejście problemu


Aby obejść ten problem, użyj jednej z następujących metod:

Metoda 1

Jeśli używasz agenta korespondencji seryjnej w trybie ciągłym, okresowo zatrzymania procesu agenta korespondencji seryjnej i uruchom go ponownie.

Na przykład otrzymujesz błędy "Brak pamięci" po pięciu dniach i scalić agenta jest zaplanowane jako zadanie. Następnie możesz zaplanować nowe zadanie agenta programu SQL Server w celu wywołania sp_stop_job następuje sp_start_job , określając nazwę zadania agenta korespondencji seryjnej cyklu procesu usterce co pięć dni. Po zatrzymaniu procesu agenta korespondencji seryjnej (Replmerg.exe), ukaże się wszelkie przecieku pamięci w obszarze pamięci procesu.

Aby uzyskać więcej informacji na temat użycia - ciągłego przełącznika na scalanie agenta, zobacz następującą witrynę Microsoft Developer Network (MSDN) w sieci Web:

Metoda 2

Jeśli korzystasz z zadania agenta korespondencji seryjnej, może skonfigurować ręczne logiki pętli wewnątrz zadania za pomocą dodatkowych kroków, zamiast polegać na ciągłe parametr. Zamiast procesu scalania jednego agenta, zapętlenie wewnętrznie na zawsze w sposób ciągły należy zaplanować agenta korespondencji seryjnej jako krok zadanie, który powtarza się na częste takich jak raz na minutę. Proces zakończy działanie między ponownymi próbami, i zwalnia wszelkie przecieku pamięci.
Edytuj zadanie tak, aby kroki należy powtórzyć w pętli z pauzę między powtarza agenta korespondencji seryjnej.
  1. Po wykonaniu kroku [3] "Wykrywać zamknięcia nonlogged agenta," Dodaj nowy etap [4] o nazwie "Nieokreślony pętla ponawiania." Ustaw typ TSQL i polecenie "waitfor opóźnienie ' 0: 00:05" ", to opóźnienie TSQL zapewni 5 pauza drugiego, który można skonfigurować jako interwał sondowania w taki sposób, że agent korespondencji seryjnej będzie Zatrzymaj się na chwilę między wykonania i nie ciągłej pracy. Na karcie Zaawansowane określić "Na sukces akcję" jako "Przejdź do kroku [2] Uruchom agenta" i "Na akcja po niepowodzeniu" jako "Przejdź do kroku [2] Uruchom agenta."
  2. Edytuj etap [2] uruchamiania agenta do upewnij się, że zostanie osiągnięty pętli krok [4]. Na karcie Zaawansowane w kroku [2], należy ustawić na powodzenie akcji "Przejdź do kroku: [4] nieokreślony pętli ponownych prób" i ustawić akcję On awarii "Przejdź do następnego kroku."
  3. Edytuj etap [3] "Shutdown agenta nonlogged Wykryj" Aby upewnić się, że osiągnięciu pętli w kroku [4]. Na karcie Zaawansowane w kroku [3] należy ustawić na powodzenie akcji "Przejdź do następnego kroku". Można również zdecydować, czy ma krok [3] na niepowodzenie działania można ustawić jako "Przejdź do następnego kroku" lub "Zamknij zadania raportowania błędu." Jeśli jest ono skonfigurowane do Zamknij, pokaże zadania awarii w replikacji i monitorze zadania. Jeśli jest skonfigurowany w przypadku awarii, aby przejść do kroku czwartego pętli, agent korespondencji seryjnej może ponownie przez czas nieokreślony, a błędy są rejestrowane przez czas nieokreślony.

Metoda 3

Podobnie jeśli aplikacja RMO umożliwia wywołanie metody MergeSynchronizationAgent.Synchronize() , która synchronizuje baza danych subskrybenta w pętli, Zatrzymaj i uruchom ponownie proces okresowo, aby zwolnić wszystkie pamięci, która jest przecieku z powodu tego problemu.
Aby uzyskać więcej informacji na temat tego obiektu i metoda, zobacz następującą witrynę Microsoft Developer Network (MSDN) w sieci Web: http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.replication.mergesynchronizationagent.synchronize(SQL.90).aspx

Powiązane artykuły


Aby uzyskać więcej informacji o sposobach używania - ciągłego przełącznik na agenta korespondencji seryjnej, odwiedź następującą witrynę Microsoft Developer Network (MSDN) w sieci Web:
Aby uzyskać więcej informacji na temat procedury przechowywane sp_stop_job odwiedź następującą witrynę Microsoft Developer Network (MSDN) w sieci Web:
Aby uzyskać więcej informacji na temat procedury przechowywanej sp_start_job odwiedź następującą witrynę Microsoft Developer Network (MSDN) w sieci Web:
Aby uzyskać więcej informacji dotyczących sposobu uzyskiwania dodatku Service Pack 3 dla programu SQL Server 2005, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

913089 jak uzyskać najnowszy dodatek service pack dla programu SQL Server 2005

Aby uzyskać więcej informacji na temat nowych funkcji w dodatku Service Pack 3 (SP3) dla programu SQL Server 2005 i ulepszenia w dodatku SP3 dla programu SQL Server 2005 odwiedź następującą witrynę firmy Microsoft w sieci Web:Aby uzyskać więcej informacji dotyczących schematu nazewnictwa dla aktualizacji programu SQL Server kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

Pakiety aktualizacji 822499 nowy schemat nazewnictwa dla oprogramowania Microsoft SQL Server

Aby uzyskać więcej informacji dotyczących terminologii aktualizacji oprogramowania, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
824684 Opis standardowej terminologii używanej do opisywania aktualizacji oprogramowania firmy Microsoft