BUG #: 115124 (turinio priežiūra)
VSTS klaida numeris: 316475
VSTS klaida numeris: 365460

"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

Microsoft SQL Server 2005 "arba" SQL Server 2008, Paleidus Išsaugota procedūra susijęs serverio naudojant nuotolinio serverio. Po to, kai paleidžiate saugomas procedūras tiek kartų, galite rasti SQL serverio tarnybos atminties greitai didėja. Be to, įvairios klaidos pranešimai susiję išeikvojimas atminties MemTolLeave adresų srityje gali būti užregistruotas SQL Server 2008 errorlog faile.

Pastaba. Ši problema gali kilti naudojant dubliavimo, žurnalo pristatymas arba atvaizdavimo. Šias funkcijas gali naudoti saugomas procedūras, kurie naudoti susietąjį serverį.

Priežastis

Ši problema kyla dėl atminties nutekėjimas, kuri kyla, kai vykdote užklausą, kuri naudoja susijęs serverio. Tai įvyksta, kai skambinate nuotolinio saugomą procedūrą. Yra dviejų rūšių galimų nuotėkių diagnostiką:

  • Išsaugota procedūra skambutį, kuris visada perduotas reikšmę. Tai yra mažas, bet reguliariai nuotėkis.

  • Nuotolinis Išsaugota procedūra skambinti, kad yra, sqlvariant duomenų tipas parametrai.

Sprendimas

SQL Server 2008 1 pakeitimų paketas


Ši problema buvo pirmą kartą buvo išleistas Kaupiamasis naujinimas 3 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:

971491 kaupiamojo naujinimo paketo 3, 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ą.

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

Būsena

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

Daugiau informacijos

Iškvietimų sąrašo informacija

Atminties nuotėkis matyti numatytojo netvarkiojo masyvo. Bent vienas nuotėkio modelis bus 40 baitų. Tai CXVariant struktūros reikšmę dydį. LFH netvarkiuosius gali Rodyti 40 baitų nutekėjimas tinkamai ir gali būti rodomas nutekėjimai 4 KB 64 KB diapazonus, jei naudojate į ! krūvos < heaphandle > - a -k komandą visos iškelties failą.

Pastaba. Pagal numatytuosius nustatymus "Windows Server 2008", "Windows Vista", "Windows 7" ir "Windows Server 2008 R2" naudos LFH netvarkiojo masyvo numatytojo netvarkiojo masyvo SQL serverio proceso.

UMDH arba DebugDiag rodo spinduliuojamieji dėklus šių pobūdžio. UMDH, DebugDiag, ir ! krūvos – l komanda rodo tai, kaip dažnai rietuvės nutekėjimas grąžinimo būsena problemos:

Pastaba. Priklausomai nuo to, kuris teikėjas naudojamas, informacijos teikėjas gali būti sqlncli10.


ntdll!RtlAllocateHeap+0001B970sqlncli10!CDataSource::DataConvert+0000C898
sqlncli10!CDataSource::OLEDBdataFromSQLdata+0000018C
sqlncli10!CStmt::ProcessReturnStatus+000001FA
sqlncli10!BATCHCTX::Run+000005BA
sqlncli10!CDBConnection::ProcessTDSStream+000001A7
sqlncli10!CStmt::SQLExecRPC+00000602
sqlncli10!CCommand::ExecuteHelper+00000250
sqlncli10!CCommand::Execute+000013BB
sqlncli10!CImpICommandText::Execute+00000209
sqlservr!MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64>::operator()+00000053
sqlservr!ReturnValueHolder<long>::ExecAndSaveReturnValue<MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> const >+00000018
sqlservr!CallProtectorImpl::CallWithSEH<IWrapInterface<ICommandText>::CallTraitsNone,long,MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> const >+0000002A
sqlservr!CallProtectorImpl::CallExternalFull<IWrapInterface<ICommandText>::CallTraitsNone,long,MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> const >+0000004D
sqlservr!SOS_CallExternalFunctor<IWrapInterface<ICommandText>::CallTraitsNone,long,MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> >+0000001D
sqlservr!IWrapInterface<ICommandText>::HrCallExternal<MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> >+00000092
sqlservr!CWrapICommandText::Execute+00000230
sqlservr!CRpcInterfaces::Relay+00000982
sqlservr!CStmtExecProc::XretRemoteExec+00000732
sqlservr!CRemoteProcExecLevel::Execute+00000160
sqlservr!CStmtExecProc::XretWrapRemoteExec+000001D5
sqlservr!CStmtExecProc::XretExecExecute+0000078E
sqlservr!CXStmtExecProc::XretExecute+0000004E
sqlservr!CExecStmtLoopVars::ExecuteXStmtAndSetXretReturn+0000003C
sqlservr!CMsqlExecContext::ExecuteStmts<1,1>+000002AA
sqlservr!CMsqlExecContext::FExecute+00001023
sqlservr!CSQLSource::Execute+00001091
sqlservr!process_request+000006BC
sqlservr!process_commands+000003C4
sqlservr!SOS_Task::Param::Execute+0000016B
sqlservr!SOS_Scheduler::RunTask+000001A5
sqlservr!SOS_Scheduler::ProcessTasks+000002E7

Here are the call stacks for the SQL Variant output parameter leak for sql_variant:

ntdll!RtlAllocateHeap+0001B970
sqlncli10!CDataSource::DataConvert+0000BAD2
sqlncli10!CDataSource::OLEDBdataFromSQLdata+00000D18
sqlncli10!CStmt::ProcessReturnValue+00000BC5
sqlncli10!CTdsSqloledb::OnReturnValue+00000018
sqlncli10!BATCHCTX::ProcessReturnValue+00000366
sqlncli10!BATCHCTX::Run+000004AD
sqlncli10!CDBConnection::ProcessTDSStream+000001A7
sqlncli10!CStmt::SQLExecRPC+00000602
sqlncli10!CCommand::ExecuteHelper+00000250
sqlncli10!CCommand::Execute+000013BB
sqlncli10!CImpICommandText::Execute+00000209
sqlservr!MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64>::operator()+00000053
sqlservr!ReturnValueHolder<long>::ExecAndSaveReturnValue<MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> const >+00000018
sqlservr!CallProtectorImpl::CallWithSEH<IWrapInterface<ICommandText>::CallTraitsNone,long,MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> const >+0000002A
sqlservr!CallProtectorImpl::CallExternalFull<IWrapInterface<ICommandText>::CallTraitsNone,long,MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> const >+0000004D
sqlservr!SOS_CallExternalFunctor<IWrapInterface<ICommandText>::CallTraitsNone,long,MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> >+0000001D
sqlservr!IWrapInterface<ICommandText>::HrCallExternal<MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> >+00000092
sqlservr!CWrapICommandText::Execute+00000230
sqlservr!CRpcInterfaces::Relay+00000982
sqlservr!CStmtExecProc::XretRemoteExec+00000732
sqlservr!CRemoteProcExecLevel::Execute+00000160
sqlservr!CStmtExecProc::XretWrapRemoteExec+000001D5
sqlservr!CStmtExecProc::XretExecExecute+0000078E
sqlservr!CXStmtExecProc::XretExecute+0000004E
sqlservr!CExecStmtLoopVars::ExecuteXStmtAndSetXretReturn+0000003C
sqlservr!CMsqlExecContext::ExecuteStmts<1,1>+000002AA
sqlservr!CMsqlExecContext::FExecute+00001023
sqlservr!CSQLSource::Execute+00001091
sqlservr!process_request+000006BC
sqlservr!process_commands+000003C4
sqlservr!SOS_Task::Param::Execute+0000016B

ntdll!RtlAllocateHeap+0001B970
sqlncli10!SSVariantCopy+00000149
sqlncli10!CDataSource::DataConvert+0000BB50
sqlncli10!CDataSource::OLEDBdataFromSQLdata+00000D18
sqlncli10!CStmt::ProcessReturnValue+00000BC5
sqlncli10!CTdsSqloledb::OnReturnValue+00000018
sqlncli10!BATCHCTX::ProcessReturnValue+00000366
sqlncli10!BATCHCTX::Run+000004AD
sqlncli10!CDBConnection::ProcessTDSStream+000001A7
sqlncli10!CStmt::SQLExecRPC+00000602
sqlncli10!CCommand::ExecuteHelper+00000250
sqlncli10!CCommand::Execute+000013BB
sqlncli10!CImpICommandText::Execute+00000209
sqlservr!MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64>::operator()+00000053
sqlservr!ReturnValueHolder<long>::ExecAndSaveReturnValue<MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> const >+00000018
sqlservr!CallProtectorImpl::CallWithSEH<IWrapInterface<ICommandText>::CallTraitsNone,long,MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> const >+0000002A
sqlservr!CallProtectorImpl::CallExternalFull<IWrapInterface<ICommandText>::CallTraitsNone,long,MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> const >+0000004D
sqlservr!SOS_CallExternalFunctor<IWrapInterface<ICommandText>::CallTraitsNone,long,MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> >+0000001D
sqlservr!IWrapInterface<ICommandText>::HrCallExternal<MethodCallBinder_5<long,ICommandText,long (__cdecl ICommand::*)(IUnknown * __ptr64,_GUID const & __ptr64,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64) __ptr64,IUnknown * __ptr64,_GUID,tagDBPARAMS * __ptr64,__int64 * __ptr64,IUnknown * __ptr64 * __ptr64> >+00000092
sqlservr!CWrapICommandText::Execute+00000230
sqlservr!CRpcInterfaces::Relay+00000982
sqlservr!CStmtExecProc::XretRemoteExec+00000732
sqlservr!CRemoteProcExecLevel::Execute+00000160
sqlservr!CStmtExecProc::XretWrapRemoteExec+000001D5
sqlservr!CStmtExecProc::XretExecExecute+0000078E
sqlservr!CXStmtExecProc::XretExecute+0000004E
sqlservr!CExecStmtLoopVars::ExecuteXStmtAndSetXretReturn+0000003C
sqlservr!CMsqlExecContext::ExecuteStmts<1,1>+000002AA
sqlservr!CMsqlExecContext::FExecute+00001023
sqlservr!CSQLSource::Execute+00001091
sqlservr!process_request+000006BC
sqlservr!process_commands+000003C4

Nuorodos

Jei norite gauti daugiau informacijos apie papildomos priežiūros modelį SQL Server, spustelėkite toliau straipsnio numerį ir peržiūrėkite straipsnį Microsoft žinių bazėje:

935897 papildomos priežiūros modelį galite atsisiųsti iš SQL serverio komandos, kuri pateikia praneštų problemų karštąsias pataisas


Jei norite gauti daugiau informacijos apie SQL Server naujinimų pavadinimų suteikimo schemą, spustelėkite toliau straipsnio numerį ir peržiūrėkite straipsnį Microsoft žinių bazėje:

822499 Nauja pavadinimų suteikimo 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 standartinę terminologiją, vartojamą Microsoft programinės įrangos naujinimams apibūdinti, aprašas

Daugiau informacijos

SQL Server 2008 R2 BPA informacija

Į SQL Server 2008 R2 geriausios praktikos analizatorius (SQL Server 2008 R2 BPA) pateikia taisyklę, kuria nustatomi atvejai, kai SQL serverio egzemplioriuje yra susiję serverių, kurie sukonfigūruoti naudoti ir šios pataisos nėra taikomas. SQL Server 2008 R2 BPA palaiko SQL Server 2008 "ir" SQL Server 2008 R2.

Jei paleidžiate BPA įrankį ir parodomas įspėjimas, "Duomenų bazės modulis – susietojo serverio atminties nuotėkio taisyti nėra," jums reikia patikrinti šiame straipsnyje minimas požymių, ir įdiegti šį kaupiamąjį naujinimą, kuris yra tinkamas.

Nuorodos

Taisyklės programinė įranga

Taisyklės pavadinimas

Taisyklės identifikatorius

SQL Server 2008 R2 BPA taisyklė

susietojo serverio atminties nutekėjimas pataisa nėra

RID3807






Autorius (SME): bruceye
Rašytojas: ericzha
Techninis redaktorius: tejasaks
Redaktorius: v-lynan

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 kalbos kokybe?
Kas turėjo įtakos jūsų įspūdžiams?

Dėkojame už jūsų atsiliepimus!

×