PROGRAMFEL #: 119532 (Innehållsunderhåll)
VSTS programfel nummer: 344705
VSTS programfel nummer: 365477
VSTS programfel nummer: 365476

Microsoft distribuerar korrigeringsfiler för Microsoft SQL Server 2005 som en nedladdningsbar fil. Eftersom korrigeringar är kumulativa, varje ny utgåva innehåller alla snabbkorrigeringar och säkerhetskorrigering för alla säkerhetskorrigeringar som ingår i föregående SQL Server 2005. Microsoft distribuerar Microsoft SQL Server 2008 korrigeringar som en nedladdningsbar fil. Eftersom korrigeringar är kumulativa, varje ny utgåva innehåller alla snabbkorrigeringar och säkerhetskorrigering för alla säkerhetskorrigeringar som ingår i föregående SQL Server 2008.

Symptom

Du använder kopplingsreplikering för SQL Server 2005 eller SQL Server 2008 kopplingsreplikering med en synkronisering av Web baserade prenumeranter. En minnesläcka uppstår efter upprepad synkroniseringar och felmeddelandet "slut på minne" fel efter en viss tidsperiod. Detta blir tydligt när värdprocessen inte startas under lång tid, till exempel när koppla Agent (Replmerg.exe) används tillsammans med parametern - kontinuerlig eller när parametern kontinuerlig anges i Agent-profilen som används till agenten. Problemet kan också påverka en RMO-program eller en tjänst som du utvecklat som kör synkroniseringen i en loop när programmet körs under flera dagar utan att avsluta.

Orsak

Flera interna objekt läckt vid varje synkronisering.

Lösning

SQL Server 2005 Service Pack 3


Korrigeringsfil för problemet gavs först ut i kumulativ uppdatering 6 för SQL Server 2005 Service Pack 3. Mer information om den kumulativa uppdateringspaket klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

974648 kumulativ uppdateringspaket 6 för SQL Server 2005 Service Pack 3Obs! Eftersom på byggen är kumulativa, varje ny version av korrigeringsfilen innehåller alla snabbkorrigeringar och säkerhetskorrigering för alla säkerhetskorrigeringar som ingår i föregående SQL Server 2005. Microsoft rekommenderar att du använder den senaste utgåvan av korrigering som innehåller den här snabbkorrigeringen. För mer information klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

960598 i SQL Server 2005 bygger som har getts ut efter SQL Server 2005 Service Pack 3.
Snabbkorrigeringar för Microsoft SQL Server 2005 skapas för särskilda SQL Server servicepack. Du måste installera en snabbkorrigering för SQL Server 2005 Service Pack 3 till en installation av SQL Server 2005 Service Pack 3. En snabbkorrigering som finns i en SQL Server service pack ingår som standard i nästa service pack för SQL Server.

Den utgivna versionen av SQL Server 2008

Viktigt Om du kör versionen av SQL Server 2008 måste du installera den här korrigeringsfilen.

Korrigeringsfil för problemet gavs först ut i den kumulativa uppdateringen 8. Mer information om hur du skaffar den kumulativa uppdateringspaket för SQL Server 2008 klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

975976 kumulativ uppdateringspaket 8 för SQL Server 2008Obs! Eftersom på byggen är kumulativa, varje ny version av korrigeringsfilen innehåller alla snabbkorrigeringar och säkerhetskorrigering för alla säkerhetskorrigeringar som ingår i föregående SQL Server 2008. Vi rekommenderar att du använder den senaste utgåvan av korrigering som innehåller den här snabbkorrigeringen. För mer information klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

956909 i SQL Server 2008 bygger som har getts ut efter SQL Server 2008

SQL Server 2008 servicepack 1

Viktigt Du måste installera den här korrigeringen om du kör SQL Server 2008 Service Pack 1.


Korrigeringsfil för problemet gavs först ut i kumulativ uppdatering 5 för SQL Server 2008 Service Pack 1. Mer information om den kumulativa uppdateringspaket klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

975977 kumulativ uppdateringspaket 5 för SQL Server 2008 Service Pack 1Obs! Eftersom på byggen är kumulativa, varje ny version av korrigeringsfilen innehåller alla snabbkorrigeringar och säkerhetskorrigering för alla säkerhetskorrigeringar som ingår i föregående SQL Server 2008. Microsoft rekommenderar att du använder den senaste utgåvan av korrigering som innehåller den här snabbkorrigeringen. För mer information klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

970365 i SQL Server 2008 bygger som har getts ut efter SQL Server 2008 Service Pack 1
Snabbkorrigeringar för Microsoft SQL Server 2008 skapas för särskilda SQL Server servicepack. Du måste installera en snabbkorrigering för SQL Server 2008 Service Pack 1 till en installation av SQL Server 2008 Service Pack 1. En snabbkorrigering som finns i en SQL Server service pack ingår som standard i nästa service pack för SQL Server.

Status

Microsoft har bekräftat att detta är ett problem i Microsoft-produkterna som nämns i avsnittet "Gäller".

Temporär lösning

Undvik det här problemet genom att använda någon av följande metoder:

Metod 1

Om du använder en kopplad agent i kontinuerligt läge stoppa agenten kopplingsprocessen regelbundet och starta det igen.

Till exempel felmeddelandet "slut på minne" fel efter fem dagar och koppla-agenten är schemalagd som ett jobb. Schemalägg sedan ett nytt SQL Server Agent-jobb för att anropa sp_stop_job följt av sp_start_job anger du koppla Agent Jobbnamn som växlar påverkade processen var femte dag. Om du stoppar processen Koppla Agent (Replmerg.exe), kommer att släppas varje läckt minne i processens minnesutrymme.

Mer information om användning av - kontinuerlig växeln på Koppla-Agent finns på följande Microsoft Developer Network (MSDN)-webbplats:

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

Metod 2

Om du använder agenten koppla från ett projekt kan du konfigurera manuell upprepning logik i jobbet med hjälp av ytterligare åtgärder i stället för en kontinuerlig parametern. I stället för en agent kopplingsprocessen kontinuerligt internt oändlig slinga, schemalägga koppla Agent som ett jobbsteg som upprepas regelbundet som en gång i minuten. Processen avslutas mellan försöken och detta frigör alla läckt minne.
Redigera agenten koppla jobbet så att upprepar du stegen i en loop med en paus mellan upprepas.

  1. Efter steg [3] "Identifiera nonlogged agent avstängning" lägga till ett nytt steg [4] med namnet "Obestämd försök Loop". Ange TSQL och kommandot "waitfor fördröjning 0: 00:05'", TSQL fördröjningen ger en 5 andra paus som du kan konfigurera som ett avsökningsintervall på ett sådant sätt att koppla agent ska gör en kort paus mellan körningar och inte köras kontinuerligt. På fliken Avancerat ange "På utfört åtgärden" som "Gå vidare till steg [2] kör Agent" och "på fel åtgärd" som "Gå vidare till steg [2] kör Agent".

  2. Redigera steg [2] köra Agent för att repetera steg [4] har uppnåtts. Ange på fliken Avancerat i steg [2] på lyckade åtgärden "går du till steg: [4] obestämd Retry-Loop" och anger vidare fel åtgärd att "Gå vidare till nästa steg".

  3. Redigera steg [3] "Identifiera nonlogged agent avstängning" för att säkerställa att loop i steg [4] har uppnåtts. Ange om lyckade åtgärden, "Gå till nästa steg" på fliken Avancerat i steg [3]. Du kan också bestämma om du vill ha steg [3] vid fel åtgärd anges som "Gå till nästa steg" eller "Avsluta jobbet rapporterar fel." Om den är konfigurerad för att avsluta visas jobbet fel i Replication Monitor och bildskärmen för jobbet. Om den är konfigurerad vid underlåtenhet att gå till det fjärde steget loop koppla agent kan köra på obestämd tid och fel loggas på obestämd tid.

Metod 3

På samma sätt om du använder ett program för RMO för att anropa metoden MergeSynchronizationAgent.Synchronize() som synkroniserar prenumerationsdatabas i en loop, stoppa och starta om processen med jämna mellanrum för att frigöra alla minne som läckt problemet.
Mer information om det här objektet och metoden finns på följande Microsoft Developer Network (MSDN)-webbplats: http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.replication.mergesynchronizationagent.synchronize(SQL.90).aspx

Mer Information

Information för anropsstacken

Minnesläcka 1


Den här minnesläcka i standard-heap. Standardheapen blir mycket fragmenterad små 32 byte sträng läckor.0:000> !heapstats 0 -sHeap=0x00140000 BusyCount=1380235 BusyBytes=55115099
Found allocations in range of 0->151496 bytes.
Largest count is 850531 for memory blocks of size 32
Largest bytes used is 27216992 bytes for memory blocks of size 32

Size Count Total Percent Of Maximum Allocation Size In Range
------ ------ -------- ----------------------------------------------------------------------------------------------------
32 850531 27216992 ****************************************************************************************************
48 306892 14730816 ******************************************************
64 100583 6437312 ***********************
16 93995 1503920 *****
80 11068 885440 ***
151496 3 454488 *
256 1386 354816 *
160 1866 298560 *
904 131 118424

Lägga till upp till 27 MB begåtts i det här exemplet 32 byte fördelningar. Standard-heap har dock en stor reservation delvis eftersom objekten läckt spridas över heapen och Fragmentera utrymme mellan block.



De flesta av dessa allokeringar 32 byte som kommer från SysAllocString samtal i koden där det inte finns några SysFreeString eller ta bort samtalet.0:000> kLChildEBP RetAddr
0012b878 4c0a2f7b xmlsub!CXMLSubscriber::ReadAgentProfileParameter+0x1dd
0012b8b4 4e67a7e4 msgprox!CProxyMessageDatasource::ReadAgentProfileParameter+0x5b
0012bc18 4e6a65fe replrec!CDatabaseReconciler::UpdateAgentProfileCache+0x384
0012bda8 4e6a9281 replrec!CDatabaseReconciler::MoveChangesToDest+0x219e
0012cff8 4e6aae46 replrec!CDatabaseReconciler::CoreReconcile+0x1b01
0012d9ec 4e6ab388 replrec!CDatabaseReconciler::MessageReconcile+0x1206
0012ed90 4d1b651d replrec!CDatabaseReconciler::Reconcile+0x398
0012edd0 4dbf6331 sqlmergx!CSQLMerge::Run+0x18d
0012ede0 4de729b8 Microsoft_SqlServer_Replication!SQLMERGXLib::ISQLMerge::Run+0x11
0012ee70 4de70ed1 Microsoft_SqlServer_Replication_ni!Microsoft.SqlServer.Replication.MergeSynchronizationAgent.Run()+0x14c
0012eef8 00d2862b Microsoft_SqlServer_Replication_ni!Microsoft.SqlServer.Replication.MergeSynchronizationAgent.Synchronize()+0x71

Andra minnesläcka uppstår i C runtime stack med replikering relaterade COM-objekt. Detta läckage kan ses genom att skanna alla heaps för vftable som pekar till objekt i biblioteket replrov.dll med filtillägget MDACExts! tablescan.0:000> !tablescan 'x replprov!*vftable*' 0Count Total Bytes Size Address Function
-------- ----------- ------ ---------- ----------------------------------------------------------------------------------------------------
1806 43344 24 0x4c9d1868 replprov!CReplicationProvider::`vftable'
1719 13752 8 0x4c9d1858 replprov!CSupportErrorInfo::`vftable'
1806 2066064 1144 0x4c9d1ba0 replprov!CMergePublisher::`vftable'
1806 7238448 4008 0x4c9d6250 replprov!CMergeDatasource::`vftable'
1806 7238448 4008 0x4c9d61a8 replprov!CMergeDatasource::`vftable'

Om du inte har tabellen skanna kan du visa den här läcka utifrån de storlekar som anges (24,8,1144, 4008). Genom att köra följande typ av kommando mot heap:0:000> !heapstats 0x003e0000 -s
Heap=0x003e0000 BusyCount=9363 BusyBytes=12555368
Found allocations in range of 4->8192 bytes.
Largest count is 1897 for memory blocks of size 8
Largest bytes used is 7238448 bytes for memory blocks of size 4008

Size Count Total Percent Of Maximum Allocation Size In Range
----- ----- ------- ----------------------------------------------------------------------------------------------------
4008 1806 7238448 ****************************************************************************************************
3128 900 2815200 **************************************
1144 1806 2066064 ****************************
etc...


Det överordnade objektet är i CReplicationProvider. De tre underordnade objekt ha tillbaka pekare till det överordnade objektet. Därför finns dessa objekt med antalet referenser till varandra. Förstöra dessa objekt måste alla referens räknar minska till 0. Eftersom en av antalet referenser inte minskas korrekt i koden, förstörs inte fyra objekt varje gång som är instansierade objekten.



Kommentarer

Om du använder spårning program läcka är metoden som tilldelats 3 4 läckt objekt "replprov! CReplicationProvider::InitInstance".



Anrop till nytt på själva CReplicationProvider är 4 objekt.



Minnesläcka 2


Andra minnesläcka som fastställs i den här versionen innehåller kolumnnamn från replikerade artiklar använder storlek 32 byte och 48 byte heap-block. Följande är en del av den här högen:xmlsub!CXMLSubscriberCommon::ReadNodexmlsub!CXMLSubscriberCommon::FindNamedNodeInList

Referenser

Mer information om hur du använder - kontinuerlig växeln på Koppla-Agent finns på följande Microsoft Developer Network (MSDN)-webbplats:

http://msdn.microsoft.com/en-us/library/ms147839.aspx
Mer information om sp_stop_job lagrad procedur finns på följande Microsoft Developer Network (MSDN)-webbplats:

http://http://msdn.microsoft.com/en-us/library/ms182793(SQL.90).aspx
Mer information om sp_start_job lagrad procedur finns på följande Microsoft Developer Network (MSDN)-webbplats:

http://msdn.microsoft.com/en-us/library/ms186757(SQL.90).aspx
Om du vill veta mer om hur du hämtar SQL Server 2005 Service Pack 3 klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

913089 hur du skaffar den senaste service Packet för SQL Server 2005

Mer information om de nya funktionerna i SQL Server 2005 Service Pack 3 (SP3) och förbättringar i SQL Server 2005 SP3 finns på följande Microsoft-webbplats:

http://go.microsoft.com/fwlink/?LinkId=131442Om du vill veta mer om namngivning schemat för uppdateringar för SQL Server klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

822499 nytt namnge schema för Microsoft SQL Server-programvara för uppdateringspaket

För mer information om terminologin för programuppdateringar klickar du på följande artikelnummer och läser artikeln i Microsoft Knowledge Base:

824684 Beskrivning av standardterminologin som används för att beskriva Microsoft-programuppdateringar

Författare: jasonh
Skribent: v-jayc
Teknisk granskare: jasonh;
Redigering: v-stepce

Behöver du mer hjälp?

Utöka dina kunskaper
Utforska utbildning
Få nya funktioner först
Anslut till Microsoft Insiders

Hade du nytta av den här informationen?

Hur nöjd är du med översättningskvaliteten?

Vad påverkade din upplevelse?

Har du ytterligare feedback? (Valfritt)

Tack för din feedback!

×