BUG #: 119532 (turinio priežiūra)
VSTS klaida numeris: 344705
VSTS klaida numeris: 365477
VSTS klaida numeris: 365476

"Microsoft" Microsoft SQL Server 2005 pataisymus išleidžia kaip vieną atsisiunčiamą failą. Kadangi šie pataisymai yra kaupiamieji, kiekvienoje laidoje būna visos karštosios pataisos ir visos saugos pataisos, kurios buvo įtrauktos į ankstesnę SQL Server 2005 nustatyti išleidimo. "Microsoft" Microsoft SQL Server 2008 pataisymus išleidžia kaip vieną atsisiunčiamą failą. Kadangi šie pataisymai yra kaupiamieji, kiekvienoje laidoje būna visos karštosios pataisos ir visos saugos pataisos, kurios buvo įtrauktos į ankstesnę SQL Server 2008 pataisymų laidą.

Požymiai

Galite naudoti SQL Server 2005 režimą arba SQL Server 2008 režimą su žiniatinklio sinchronizavimo sistemos abonentas. Atminties nutekėjimas atsiranda, kai pakartotinai sinchronizacijų ir gali būti "baigėsi atmintis" klaidos po tam tikro laiko. Tai tampa pastebimas, kai pagrindinis procesas yra nebuvo paleista iš naujo ilgą laiką, pvz., kai naudojamas suliejimo agentas (Replmerg.exe) - nuolat jungiklis arba kai nuolat parametras nurodyta agento profilį, kuriame yra taikomas agentas. Taip pat ši problema gali turėti įtakos RVG taikomosios programos arba pakeitimų, kuriuos sukūrė, kuris veikia sinchronizavimo ciklo programa veikia kelias dienas neišeidami.

Priežastis

Keli vidiniai objektai yra perduotas kiekvieno sinchronizavimo metu.

Sprendimas

SQL Server 2005 3 pakeitimų paketas


Ši problema buvo pirmą kartą buvo išleistas Kaupiamasis naujinimas 6 SQL Server 2005 3 pakeitimų paketą. Jei norite gauti daugiau informacijos apie šį kaupiamųjų naujinimų paketą, spustelėkite toliau straipsnio numerį ir peržiūrėkite straipsnį Microsoft žinių bazėje:

974648 kaupiamojo naujinimo paketo 6 SQL Server 2005 3 pakeitimų paketuPastaba. Kadangi komponavimo versijos yra kaupiamosios, kiekvienoje pataisų laidoje būna visos karštosios ir visus saugos pataisas, kurios buvo įtrauktos į ankstesnę SQL Server 2005 nustatyti išleidimo. "Microsoft" rekomenduoja, kad manote, kad pritaikyti pačios naujausios pataisų laidos, kuriame bus šios karštosios pataisos. Norėdami gauti daugiau informacijos, spustelėkite toliau pateiktą straipsnio numerį ir peržiūrėkite „Microsoft Knowledge Base“ žinių bazės straipsnį:

960598 the SQL Server 2005 komponavimo versijos, išleistos po to, kai buvo išleistas SQL Server 2005 3 pakeitimų paketą.
Microsoft SQL Server 2005 karštosios pataisos yra sukurti konkrečių SQL serverio pakeitimų paketus. SQL Server 2005 3 pakeitimų paketo karštosios pataisos turi būti taikomas SQL Server 2005 3 pakeitimų paketo diegimas. Pagal numatytuosius nustatymus, bet karštąsias pataisas, pateiktą "SQL Server" pakeitimų paketą yra įtrauktas į kitą "SQL Server" pakeitimų paketą.

SQL Server 2008 versiją

Svarbu. Jei naudojate SQL Server 2008 versiją, turite įdiegti šį pakeitimą.

Ši problema buvo pirmą kartą buvo išleistas Kaupiamasis naujinimas 8. Jei norite gauti daugiau informacijos apie tai, kaip gauti šį kaupiamųjų naujinimų paketas, skirtas SQL Server 2008, spustelėkite toliau straipsnio numerį ir peržiūrėkite straipsnį Microsoft žinių bazėje:

975976 kaupiamojo naujinimo paketo 8 SQL Server 2008Pastaba. Kadangi komponavimo versijos yra kaupiamosios, kiekvienoje pataisų laidoje būna visos karštosios ir visus saugos pataisas, kurios buvo įtrauktos į ankstesnę SQL Server 2008 pataisymų laidą. Rekomenduojame, kad manote, kad pritaikyti pačios naujausios pataisų laidos, kuriame bus šios karštosios pataisos. Norėdami gauti daugiau informacijos, spustelėkite toliau pateiktą straipsnio numerį ir peržiūrėkite „Microsoft Knowledge Base“ žinių bazės straipsnį:

956909 the SQL Server 2008 komponavimo versijos, išleistos po to, kai buvo išleistas SQL Server 2008

SQL Server 2008 1 pakeitimų paketas

Svarbu. Jei naudojate SQL Server 2008 1 pakeitimų paketą, turite įdiegti šį pakeitimą.


Ši problema buvo pirmą kartą buvo išleistas Kaupiamasis naujinimas 5 SQL Server 2008 1 pakeitimų paketą. Jei norite gauti daugiau informacijos apie šį kaupiamųjų naujinimų paketą, spustelėkite toliau straipsnio numerį ir peržiūrėkite straipsnį Microsoft žinių bazėje:

975977 kaupiamojo naujinimo paketo 5, SQL Server 2008 1 pakeitimų paketasPastaba. Kadangi komponavimo versijos yra kaupiamosios, kiekvienoje pataisų laidoje būna visos karštosios ir visus saugos pataisas, kurios buvo įtrauktos į ankstesnę SQL Server 2008 pataisymų laidą. "Microsoft" rekomenduoja, kad manote, kad pritaikyti pačios naujausios pataisų laidos, kuriame bus šios karštosios pataisos. Norėdami gauti daugiau informacijos, spustelėkite toliau pateiktą straipsnio numerį ir peržiūrėkite „Microsoft Knowledge Base“ žinių bazės straipsnį:

970365 the SQL Server 2008 komponavimo versijos, išleistos po to, kai buvo išleistas SQL Server 2008 1 pakeitimų paketas
Microsoft SQL Server 2008 karštosios pataisos yra sukurti konkrečių SQL serverio pakeitimų paketus. SQL Server 2008 1 pakeitimų paketo karštosios pataisos turi būti taikomas SQL Server 2008 1 pakeitimų paketo diegimas. Pagal numatytuosius nustatymus, bet karštąsias pataisas, pateiktą "SQL Server" pakeitimų paketą yra įtrauktas į kitą "SQL Server" pakeitimų paketą.

Būsena

„Microsoft“ patvirtino, kad tai yra „Microsoft“ produktų, išvardytų skyriuje „Taikoma“, problema.

Sprendimas

Norėdami išspręsti šią problemą, naudokite vieną iš toliau nurodytų būdų:

1 būdas

Jei jūs naudojate suliejimo agentas nuolat režimu, sustabdyti suliejimo agentas procesą periodiškai ir paleisti iš naujo.

Pvz., galite gauti "baigėsi atmintis" klaidos po penkių dienų, o jūsų suliejimo agentas planuojama kaip užduotį. Tada galite suplanuoti naują SQL Server agento užduoties paskambinti sp_stop_job eina sp_start_job nurodant savo sujungti agento užduoties pavadinimas, kuris bus ciklą susijusio proceso per penkias dienas. Bandant sustabdyti suliejimo agentas (Replmerg.exe) procesą, bus išleistas nutekėjusį atminties viduje procesą atminties vietos.

Jei norite gauti daugiau informacijos apie naudojimą - nepertraukiamas jungiklio sujungti agento, žr. šioje "Microsoft" programų kūrėjų tinklo (MSDN) žiniatinklio svetainėje:

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 Metodas

Jei naudojate suliejimo agentas iš darbo, gali konfigūruoti rankiniu būdu looping logikos viduje darbą naudojant papildomus veiksmus, užuot vedę nuolat parametras. Vietoj vieno suliejimo agentas procesą viduje visam laikui nuolat padarę, planuoti suliejimo agentas kaip užduoties veiksmą, kartoja dažniau kaip vieną kartą kiekvieną minutę. Procesas bus išeiti iš tarp pakartotinių bandymų skaičius, ir tai atlaisvina nutekėjusį atminties.
Redaguoti sujungti agento užduoties, kad veiksmus pakartokite su pristabdyti tarp ciklo kartoja.

  1. Po veiksmo [3] "Aptikti nonlogged agento išjungti," Pridėti naują etapą [4] pavadinimas "Neribotą kartoti ciklą." Nustatyti ir TSQL komandą "waitfor sulaikymą" 0: 00:05 "", šis TSQL sulaikymą suteiks 5 antrasis sustabdyti, galite konfigūruoti kaip sekundėmis tarp taip, kad suliejimo agentas bus sustabdyti trumpai tarp turto ir paleisti nuolat. Skirtuką Išsamiau nustatyti ", sėkmingai veiksmus" kaip "Eiti į žingsnis [2] paleisti agentas" ir "klaida veiksmas" kaip "Eiti į [2] veiksmo vykdymo agentas."

  2. Redaguoti [2] veiksmo vykdyti agento užtikrinti ciklą [4] veiksmo pasiekiama. Dėl išsamiau [2] veiksmo nustatyti dėl sėkmingos veiksmų, "pereikite prie veiksmo: [4] neribotą kartoti ciklą" ir toliau klaida veiksmų "Pereiti prie kito veiksmo."

  3. Redaguoti [3] veiksmo "Aptikti nonlogged agento išjungimas" įsitikinkite, kad atlikdami [4] linijos pasiekiama. Skirtuką Išsamiau [3] veiksmo, nustatyti, sėkmingai veiksmą, "Pereikite prie kito veiksmo". Galėsite nuspręsti, ar norite apie triktis veiksmų veiksmas [3] nustatyti kaip "Pereiti prie kito veiksmo" arba "Baigti užduotį, praneša apie gedimą." Jei jį išjungti, jis bus rodomas užduoties triktis dubliavimo ir darbo monitoriuje. Jei tai sukonfigūruota nutrūkus eiti į ketvirtą ciklą veiksmas, suliejimo agentas gali pakartotinai neribotą laiką ir klaidos įeiti neribotą laiką.

3 būdas

Be to, jei naudojate RVG programa paskambinti MergeSynchronizationAgent.Synchronize() metodą, kuris sinchronizuoja prenumeratoriaus duomenų bazė ciklo, sustabdyti ir iš naujo reguliariai gauti nemokamą jokių atminties, kuris yra perduotas dėl šios problemos.
Daugiau informacijos apie šį objektą ir metodą, rasite šioje "Microsoft" programų kūrėjų tinklo (MSDN) žiniatinklio svetainėje: http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.replication.mergesynchronizationagent.synchronize(SQL.90).aspx

Daugiau informacijos

Iškvietimų sąrašo informacija

Atminties nutekėjimas 1


Šis atminties nutekėjimas įvyksta numatytojo netvarkiojo masyvo. Numatytojo netvarkiojo masyvo tampa labai fragmentuota, nes mažas 32 baitų eilutė nutekėjimo.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

Šiame pavyzdyje, 32 bitų paskirstymas įtraukti ne daugiau kaip 27 MB padarytas. Tačiau numatytojo netvarkiojo masyvo yra didelis užsakymas iš dalies, nes šių nutekėjusį objektų per netvarkiojo masyvo ir fragmentas tarp blokų vietos.



Dauguma šių 32 baitų lėšų iš SysAllocString skambučių kodas tais atvejais, kai nėra SysFreeString arba naikinti pokalbį.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

Antras nutekėjimas įvyksta C runtime netvarkiojo masyvo su replikavimo susiję COM objektai. Nuotėkis gali matyti nuskaito visus sankaupų, nukreipkite žymiklį į objektų viduje MDACExts plėtinį replrov.dll biblioteka vftable! 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'

Jei neturite stalo nuskaityti, galite peržiūrėti nuotėkis, atsižvelgiant į dydį, pažymėti (24,8,1144, 4008). Norėdami tai padaryti, vykdykite toliau sankaupų šio tipo komandą: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...


Pirminis objektas yra toliau CReplicationProvider. Trys antrinių objektų yra atgal nuorodos į aukštesnio lygio objektui. Todėl šie objektai yra nuorodų skaičius prie kito. Sunaikinti šių objektų, turite sumažinti visų nuorodų skaičius 0. Dėl to, kad vienas iš nuorodų skaičius nėra perėjimo tinkamai kode, keturi objektai nėra sunaikinami kiekvieną kartą, kai objektai, kai juos nustato.



Pastabos

Jei naudojate nuotėkio stebėjimo programas, būdas, 3, 4 nutekėjusį objektų, kurie yra "replprov! CReplicationProvider::InitInstance".



Skambučio į naują CReplicationProvider pats yra 4-osios objektas.



Atminties nutekėjimas 2


Kitų atminties nuotėkis, kurios yra nustatytos šioje versijoje naudoja blokai netvarkiojo masyvo dydis 32 baitų ir 48 baitų ir yra stulpelių pavadinimų iš replikų straipsnius. Toliau pateikiamas šis dėklas dalis:xmlsub!CXMLSubscriberCommon::ReadNodexmlsub!CXMLSubscriberCommon::FindNamedNodeInList

Nuorodos

Jei norite gauti daugiau informacijos apie tai, kaip naudoti - nepertraukiamas pereiti sujungti agentą, apsilankykite šioje "Microsoft" programų kūrėjų tinklo (MSDN) žiniatinklio svetainėje:

http://msdn.microsoft.com/en-us/library/ms147839.aspx
Jei norite gauti daugiau informacijos apie sp_stop_job saugomą procedūrą, apsilankykite šioje "Microsoft" programų kūrėjų tinklo (MSDN) žiniatinklio svetainėje:

http://http://msdn.microsoft.com/en-us/library/ms182793(SQL.90).aspx
Jei norite gauti daugiau informacijos apie sp_start_job saugomą procedūrą, apsilankykite šioje "Microsoft" programų kūrėjų tinklo (MSDN) žiniatinklio svetainėje:

http://msdn.microsoft.com/en-us/library/ms186757(SQL.90).aspx
Jei norite gauti daugiau informacijos, kaip gauti SQL Server 2005 3 pakeitimų paketą, spustelėkite šį straipsnio numerį ir peržiūrėkite straipsnį "Microsoft" žinių bazės kaip:

913089 kaip įsigyti naujausią pakeitimų paketą SQL Server 2005

Jei norite gauti daugiau informacijos apie naujas funkcijas, SQL Server 2005 3 pakeitimų paketą (SP3) ir patobulinimų SQL Server 2005 su SP3, apsilankykite šioje "Microsoft" svetainėje:

http://go.microsoft.com/fwlink/?LinkId=131442Jei norite gauti daugiau informacijos, kaip SQL Server naujinimų pavadinimų suteikimo schemą, spustelėkite toliau straipsnio numerį ir peržiūrėkite straipsnį Microsoft žinių bazėje:

822499 naujo įvardijimo schema, skirta Microsoft SQL Server programinės įrangos naujinimų paketams

Norėdami gauti daugiau informacijos apie programinės įrangos naujinimo terminiją, spustelėkite toliau esančio straipsnio numerį ir peržiūrėkite „Microsoft“ žinių bazės straipsnį:

824684 Įprastos terminologijos, vartojamos „Microsoft“ programinės įrangos naujinimams apibūdinti, aprašas

Autorius: jasonh
Rašytojas: v-jayc
Techninis redaktorius: jasonh;
Redaktorius: v-stepce

Reikia daugiau pagalbos?

Tobulinkite savo įgūdžius
Ieškoti mokymo
Pirmiausia gaukite naujų funkcijų
Prisijungti prie "Microsoft Insider"

Ar ši informacija buvo naudinga?

Ar esate patenkinti vertimo kokybe?

Kas turėjo įtakos jūsų patirčiai?

Turite daugiau atsiliepimų? (Pasirinktinai)

Dėkojame už jūsų atsiliepimus!

×