Labojums: Saņemat kļūdu ziņojumi par trūkstošu atmiņu, izmantojot SQL Server 2005 vai SQL Server 2008 Web sinhronizācija sapludināšanas replicēšana

KĻŪDAS numurs: 119532 (satura uzturēšana)
VSTS kļūda numurs: 344705
VSTS kļūda numurs: 365477
VSTS kļūda numurs: 365476

Microsoft izplata Microsoft SQL Server 2005 labojumus kā vienu lejupielādējamu failu. Tā kā labojumi ir kumulatīvi, katrs jauns laidiens ietver visus labojumfailus un visus drošības labojumus, kas bija ietverti iepriekšējā SQL Server 2005 labojumu laidienā. Microsoft izplata Microsoft SQL Server 2008 labojumus kā vienu lejupielādējamu failu. Tā kā labojumi ir kumulatīvi, katrs jauns laidiens ietver visus labojumfailus un visus drošības labojumus, kas bija ietverti iepriekšējā SQL Server 2008 labojumu laidienā.

Pazīmes

SQL Server 2008 sapludināšanas replicēšanu Web sinhronizācija sistēma abonenta vai izmantojat SQL Server 2005 sapludināšanas replicēšana. Pēc atkārtotas sinhronizācijas rodas atmiņas noplūde un jūs varat saņemt kļūdu "trūkst atmiņas" pēc laika. Tas ir būtiski, viesošanas procesu nevar restartēt ilgu laiku, piemēram, lietojot sapludināt aģents (Replmerg.exe) nepārtrauktā slēdzis vai kad nepārtraukti parametrs nav norādīts aģenta profilu, kurā tiek lietots aģents. Šī problēma var ietekmēt RPP programmu vai pakalpojumu, kas ir izstrādāta, tiek palaista sinhronizācijas ciklā lietojumprogramma darbojas vairākas dienas, neaizverot.

Iemesls

Vairāki iekšējie objekti ir "nopludināta" katra sinhronizēšanas laikā.

Risinājums

SQL Server 2005 3. servisa pakotne


Šīs problēmas labojums vispirms tika izlaists kumulatīvais atjauninājums 6 SQL Server 2005 3. servisa pakotni. Lai iegūtu papildinformāciju par šo kumulatīvo atjauninājumu pakotnes, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:

974648 kumulatīvā atjauninājuma pakotnes 6 SQL Server 2005 3. servisa pakotniPiezīme. Tā kā būvējumi ir kumulatīvi, katrs jauns labojumu laidiens ietver visus labojumfailus un visus drošības labojumus, kas bija ietverti iepriekšējā SQL Server 2005 labojumu laidienā. Korporācija Microsoft iesaka apsvērt tāda visjaunākā labojuma laidiena pielietošanu, kurā ir iekļauts šis labojumfails. Lai iegūtu papildinformāciju, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:

960598 SQL Server 2005 būvējumi, kas tika izlaisti pēc sistēmas SQL Server 2005 3. servisa pakotnes izlaišanas.
Labojumfailu Microsoft SQL Server 2005 tiek izveidoti īpaši SQL Server servisa pakotnēm. Ir jāinstalē labojumfails SQL Server 2005 3. servisa pakotni un SQL Server 2005 3. servisa pakotnes instalēšanas. Pēc noklusējuma SQL Server servisa pakotne ir pieejama jebkurā labojumfails ir iekļauts SQL Server nākamajā servisa pakotnē.

SQL Server 2008 laidiena versija

Svarīgi! Ja izmantojat SQL Server 2008 laidiena versija jāinstalē šis labojums.

Šīs problēmas labojums vispirms tika izlaists kumulatīvais atjauninājums 8. Lai iegūtu papildinformāciju par to, kā iegūt šo kumulatīvo atjauninājumu pakotne sistēmai SQL Server 2008, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:

975976 kumulatīvā atjauninājuma pakotnes 8 SQL Server 2008Piezīme. Tā kā būvējumi ir kumulatīvi, katrs jauns labojumu laidiens ietver visus labojumfailus un visus drošības labojumus, kas bija ietverti iepriekšējā SQL Server 2008 labojumu laidienā. Ieteicams apsvērt tāda visjaunākā labojuma laidiena pielietošanu, kurā ir iekļauts šis labojumfails. Lai iegūtu papildinformāciju, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:

956909 SQL Server 2008 būvējumi, kas tika izlaisti pēc sistēmas SQL Server 2008 izlaišanas

SQL Server 2008 1. servisa pakotne

Svarīgi! Ja izmantojat SQL Server 2008 1. servisa pakotne ir jāinstalē šis labojums.


Šīs problēmas labojums vispirms tika izlaists kumulatīvais atjauninājums 5 sistēmas SQL Server 2008 1. servisa pakotnei. Lai iegūtu papildinformāciju par šo kumulatīvo atjauninājumu pakotnes, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:

975977 kumulatīvā atjauninājuma pakotnes 5 SQL Server 2008 1. servisa pakotnePiezīme. Tā kā būvējumi ir kumulatīvi, katrs jauns labojumu laidiens ietver visus labojumfailus un visus drošības labojumus, kas bija ietverti iepriekšējā SQL Server 2008 labojumu laidienā. Korporācija Microsoft iesaka apsvērt tāda visjaunākā labojuma laidiena pielietošanu, kurā ir iekļauts šis labojumfails. Lai iegūtu papildinformāciju, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:

970365 SQL Server 2008 būvējumi, kas tika izlaisti pēc sistēmas SQL Server 2008 1. servisa pakotnes izlaišanas
Microsoft SQL Server 2008 labojumfaili tiek izveidoti īpaši SQL Server servisa pakotnēm. Ir jāinstalē labojumfails SQL Server 2008 1. servisa pakotnei un SQL Server 2008 1. servisa pakotnes instalēšanas. Pēc noklusējuma SQL Server servisa pakotne ir pieejama jebkurā labojumfails ir iekļauts SQL Server nākamajā servisa pakotnē.

Statuss

Korporācija Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas ir minēti sadaļā "Attiecas uz".

Risinājums

Lai novērstu šo problēmu, izmantojiet kādu no šīm metodēm:

1. metode

Ja izmantojat sapludināšanas aģents nepārtrauktā režīmā, regulāri pārtraukt aģents sapludināšanas procesu un startējiet to vēlreiz.

Piemēram, pēc piecu dienu laikā saņemat kļūdu "trūkst atmiņas" un kā ir paredzēts jūsu sapludināt aģents. Pēc tam ieplānojat jauno SQL Server Agent darbā zvanīt sp_stop_job seko sp_start_job norādot savu sapludināt aģenta darbu nosaukumu, attiecīgajā procesu var nomainīt ik pēc piecām dienām. Ja sapludināt aģents (Replmerg.exe) procesu, tiks izlaistas visus nopludinātu atmiņas iekšpusē procesa atmiņas vietas.

Plašāku informāciju par lietošanas - nepārtrauktā slēdža par sapludināšanas aģents, skatiet šo Microsoft izstrādātāju tīkla (MSDN) vietni:

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. metode

Lietojot sapludināšanas aģents no darba, manuāli looping loģikas labo darbu var konfigurēt, izmantojot papilddarbības, nevis paļaujas uz nepārtrauktu parametru. Cikla iekšēji vienmēr nepārtraukti vienu sapludināšanas aģents procesu, nevis ieplānot sapludināšanas aģents kā darba darbību, kas atkārtojas, pamatojoties uz bieži, piemēram, ik pēc minūtes. Procesu pārtrauks starp mēģinājumu, un tas tiek atbrīvota vieta visus nopludinātu atmiņas.
Rediģējiet sapludināt aģenta darbu ciklā ar atstarpi starp atkārtojiet darbības, lai atkārtoti.

  1. Pēc darbības [3] "Noteikt nonlogged aģents izslēgšana" pievienot jaunu darbību [4] ar nosaukumu "Nenoteiktu atkārtošanas cilpas." Tips iestatīts uz TSQL un komandu "waitfor atlikšana" 0: 00:05 "", šī TSQL atlikšana nodrošinās 5 Otrais pauzes, kuru var konfigurēt kā aptaujas intervālu sapludināšanas aģents tiks īsu pauzes starp izpildes un pastāvīgi nedarbosies. Cilnē papildu norādiet "Par Success darbību" kā "Pārejiet uz darbību izpildes aģents [2]" un "darbības kļūmes" kā "Pārejiet uz darbību [2] palaist aģents".

  2. Labojiet darbības [2] palaist aģents tiktu sasniegts cilpas darbību [4]. Papildu darbības [2] cilnē iestatiet Success uz darbību "pārejiet pie: [4] neierobežots mēģinājumu cilpa" un iestatiet uz kļūme darbību uz "Pāriet pie nākamās darbības".

  3. Rediģēt darbību [3] "Noteikšanas nonlogged aģents izslēgšana" lai pārliecinātos, ka ir sasniegts cilpas darbībā [4]. [3] darbību cilnē papildu iestatīt uz Success darbību, "Pāriet pie nākamās darbības". Varat arī izlemt, vai vēlaties darbību [3] par kļūmes darbības iestatīt kā "Pārejiet pie nākamās darbības" vai "Beigt darbu atskaišu izveides kļūme." Ja tas ir konfigurēts, lai pārtrauktu, tas parādīs darba kļūme replicēšanas monitorā un monitorā darbu. Ja tas ir konfigurēts kļūmes gadījumā doties uz ceturtā cikla darbību, sapludināšanas aģents var veikt neierobežoti un kļūdas reģistrēti nenoteiktu laiku.

3. metode

Tāpat lietojot RPP lietojumprogrammu zvanīt MergeSynchronizationAgent.Synchronize() metode, kas sinhronizē abonenta datu bāze ciklā apturiet un restartējiet procesu regulāri bezmaksas nevienu atmiņu, kas ir "nopludināta" šīs problēmas dēļ.
Plašāku informāciju par šo objektu un metodi, skatiet šo Microsoft izstrādātāju tīkla (MSDN) vietni: http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.replication.mergesynchronizationagent.synchronize(SQL.90).aspx

Papildinformācija

Informācija par izsaukumu steku

Atmiņas noplūde 1


Šis atmiņas noplūde notiek noklusētās sistēmas atmiņas. Noklusētās sistēmas atmiņas kļūst ļoti sadrumstalota maza 32 baitu virkne noplūdes dēļ.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

Šajā piemērā 32 baitu sadalījumi pievienot līdz 27 MB izdarījis. Tomēr noklusētās sistēmas atmiņas ir liels rezervēšana daļēji tāpēc nopludinātu objektu tiek sadalīts kaudzes un fragmentu vietas starp bloku.



Lielāko daļu līdzekļu 32 baitu rodas SysAllocString zvanu kodā ir bez SysFreeString vai dzēst zvanu.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

Otrais noplūde notiek C izpildlaika kaudze ar replicēšanas saistīta COM objektiem. Šī noplūde var redzēt visu kaudzes vftable norādot objektu iekšpusē, izmantojot MDACExts paplašinājumu replrov.dll bibliotēka skenējot! 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'

Ja jums nav tabulas skenēšana, varat skatīt šo noplūdi pamatā ir atzīmēts izmēru (24,8,1144, 4008). Lai to paveiktu, izpildiet komandu šāda veida pret kaudzes: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...


Galvenais mērķis ir CReplicationProvider. Vecākobjekta atpakaļ rādītāji ir trīs bērnobjekti. Tāpēc šie objekti pastāv ar atsauču skaitu uz otru. Lai likvidēt šos objektus, visas atskaites skaits ir samazināt 0. Atsauču skaitu tā nav pareizi kodā samazinājusies, jo četras objektiem nav iznīcināti katru reizi, kad tos izveido objektus.



Piezīmes

Lietojot noplūde izsekošanas programmu, kas piešķirtas 3 4 nopludinātu objektu metode ir "replprov! CReplicationProvider::InitInstance".



Zvanu uz jaunu par sevi CReplicationProvider ir 4 objektu.



Atmiņas noplūde 2


Atmiņas noplūdi, kas tiek labotas, izmantojot šajā laidienā izmanto lielums 32 baitu un 48 baiti kaudze bloķē un satur kolonnu nosaukumi no replicētu raksti. Šī ir daļa no šī kaudze:xmlsub!CXMLSubscriberCommon::ReadNodexmlsub!CXMLSubscriberCommon::FindNamedNodeInList

Atsauces

Lai iegūtu papildinformāciju par to, kā izmantot nepārtraukti pārslēgties uz Sapludināt aģents, apmeklējiet šo Microsoft izstrādātāju tīkla (MSDN) vietni:

http://msdn.microsoft.com/en-us/library/ms147839.aspx
Lai iegūtu papildinformāciju par sp_stop_job saglabāta procedūra, apmeklējiet šo Microsoft izstrādātāju tīkla (MSDN) vietni:

http://http://msdn.microsoft.com/en-us/library/ms182793(SQL.90).aspx
Lai iegūtu papildinformāciju par sp_start_job saglabāta procedūra, apmeklējiet šo Microsoft izstrādātāju tīkla (MSDN) vietni:

http://msdn.microsoft.com/en-us/library/ms186757(SQL.90).aspx
Lai iegūtu papildinformāciju par SQL Server 2005 3. servisa pakotnes iegūšanu, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:

Kā iegūt jaunāko servisa pakotni, SQL Server 2005 913089

Lai iegūtu papildinformāciju par jaunajiem līdzekļiem programmā SQL Server 2005 3. servisa pakotne (SP3) un uzlabojumus sistēmā SQL Server 2005 SP3, apmeklējiet šo Microsoft Web vietu:

http://go.microsoft.com/fwlink/?LinkId=131442Lai iegūtu papildinformāciju par nosaukumdošanas shēma SQL Server atjauninājumus, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:

Jauna 822499 nosaukumdošanas shēma Microsoft SQL Server programmatūras atjaunināšanas pakotnēm

Lai iegūtu papildinformāciju par programmatūras atjauninājumu terminoloģiju, noklikšķiniet uz šī raksta numura un lasiet Microsoft zināšanu bāzes rakstu:

824684 Microsoft programmatūras atjauninājumu raksturošanai izmantotās standarta terminoloģijas apraksts

Autors: jasonh
Teksta ievadītājs: v-jayc
Tehniskais redaktors: jasonh;
Redaktors: v-stepce

Vai nepieciešama papildu palīdzība?

Paplašiniet savas prasmes
Iepazīties ar apmācību
Esiet pirmais, kas saņem jaunās iespējas
Pievienoties Microsoft Insider

Vai šī informācija bija noderīga?

Paldies par jūsu atsauksmēm!

Paldies par atsauksmēm! Šķiet, ka jums varētu būt noderīgi sazināties ar kādu no mūsu Office atbalsta speciālistiem.

×