Преминаване към основното съдържание
Поддръжка
Влизане с Microsoft
Влезте или създайте акаунт.
Здравейте,
Изберете друг акаунт.
Имате няколко акаунта
Изберете акаунта, с който искате да влезете.

ГРЕШКА #: 115124 (поддръжка на съдържанието)
VSTS бъг номер: 316475
VSTS бъг номер: 365460

Microsoft разпространява корекциите за Microsoft SQL Server 2008 като един файл за изтегляне. Тъй като корекциите са сборни, всяка нова версия съдържа всички актуални корекции и всички корекции на защитата, които са били включени в предишните SQL Server 2008 fix съобщение.

Симптоми

В Microsoft SQL Server 2005 или SQL Server 2008 изпълнявате съхранена процедура на отдалечения сървър, който използва свързан сървър. След като изпълните съхранени процедури пъти, можете да откриете, че бързо увеличава памет на услугата на SQL Server. Освен това различни съобщения за грешка свързани изчерпване на памет в MemTolLeave адресно пространство може да се запишат в SQL Server 2008 грешка файл.

Забележка: Може да възникне този проблем при използване на репликация, доставка на регистрационни файлове или отразяването. Тези функции могат да използват съхранени процедури, които използват свързан сървър.

Причина

Този проблем се дължи на изтичане на памет, която се появява, когато стартирате заявка, която използва свързан сървър. Изтичане възниква при повикване дистанционно съхранена процедура. Има два вида на потенциалните загуби:

  • Върнатата стойност на повикване съхранена процедура, която винаги е изтекъл. Това е малка, но редовно изтичане.

  • Извикване на отдалечена съхранена процедура с ПАРАМЕТРИТЕ на sqlvariant тип данни.

Решение

SQL Server 2008 Service Pack 1


Решение за този проблем излезе първо в сборна актуализация 3 за SQL Server 2008 Service Pack 1. За повече информация относно този пакет със сборни актуализации щракнете върху следния номер на статия в базата знания на Microsoft:

971491 сборни актуализация пакет 3 за SQL Server 2008 Service Pack 1Забележка: Тъй като компилациите са сборни, всяка нова версия на корекцията съдържа всички актуални корекции и всички корекции на защитата, които са били включени в предишните SQL Server 2008 fix съобщение. Microsoft препоръчва е да приложите най-новата версия на корекцията, който ще съдържа тази корекция. За повече информация щракнете върху следния номер на статия в базата знания на Microsoft:

970365 SQL Server 2008 компилации, издадени след SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008 корекции се създават специфични сервизни пакети за SQL Server. Трябва да приложите SQL Server 2008 Service Pack 1 корекция към инсталацията на SQL Server 2008 Service Pack 1. По подразбиране всяка корекция в сервизен пакет на SQL Server е включена в следващия сервизен пакет за SQL Server.

SQL Server 2005 Service Pack 3


Решение за този проблем излезе първо в сборна актуализация 6 за SQL Server 2005 Service Pack 3. За повече информация относно този пакет със сборни актуализации щракнете върху следния номер на статия в базата знания на Microsoft:

974648 сборни 6 пакет за актуализация за SQL Server 2005 Service Pack 3Забележка: Тъй като компилациите са сборни, всяка нова версия на корекцията съдържа всички актуални корекции и всички корекции на защитата, които са били включени в предишните SQL Server 2005 решение издание. Microsoft препоръчва е да приложите най-новата версия на корекцията, който ще съдържа тази корекция. За повече информация щракнете върху следния номер на статия в базата знания на Microsoft:

960598 SQL Server 2005 компилации, издадени след издаването на SQL Server 2005 Service Pack 3
Microsoft SQL Server 2005 корекции се създават сервизни пакети за определени SQL Server. Трябва да приложите SQL Server 2005 Service Pack 3 спешна корекция към инсталацията на SQL Server 2005 Service Pack 3. По подразбиране всяка корекция в сервизен пакет на SQL Server е включена в следващия сервизен пакет за SQL Server.

Версия на SQL Server 2008

Важно: Ако работите с версия на SQL Server 2008, трябва да инсталирате тази корекция.

Решение за този проблем излезе първо в сборна актуализация 8. За повече информация как да получите този Сборен пакет за SQL Server 2008, щракнете върху следния номер на статия в базата знания на Microsoft:

975976 сборни 8 пакет за актуализация за SQL Server 2008Забележка: Тъй като компилациите са сборни, всяка нова версия на корекцията съдържа всички актуални корекции и всички корекции на защитата, които са били включени в предишните SQL Server 2008 fix съобщение. Препоръчително е да приложите най-новата версия на корекцията, който ще съдържа тази корекция. За повече информация щракнете върху следния номер на статия в базата знания на Microsoft:

956909 SQL Server 2008 компилации, издадени след издаването на SQL Server 2008

Статус

Microsoft потвърждава, че това е проблем в продуктите на Microsoft, изброени в раздела "Отнася се за".

Допълнителна информация

Информация на стека на обръщение

Тази загуба на памет може да се види в свободна по подразбиране. Загуба на поне един модел ще бъде 40 байта. Това е размерът на структурата на CXVariant върната стойност. LFH куп може да показва 40 байта изтече правилно и може да покаже изтичане на 4 KB варира 64 KB, ако използвате ! куп < heaphandle > - a -k на пълна дъмп файла.

Забележка: По подразбиране Windows Server 2008, Windows Vista, Windows 7 и Windows Server 2008 R2 ще използва LFH свободна за свободна по подразбиране в процеса на SQL Server.

UMDH или DebugDiag показва спукан стекове от следния характер. UMDH, DebugDiag и ! куп-l команда това показват като общ стек за изтичане на състоянието връщане проблема:

Забележка: В зависимост от това кой доставчик се използва, доставчик може да не бъде 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

Препратки

За повече информация за модела на постъпково обслужване за SQL Server щракнете върху следния номер на статия в базата знания на Microsoft:

935897 Моделът за постъпково обслужване се предлага от екипа на SQL Server за предоставяне на спешни корекции за съобщени проблеми


За повече информация за схемата за именуване на актуализации за SQL Server щракнете върху следния номер на статия в базата знания на Microsoft:

822499 Нова схема за именуване на пакети за актуализация на софтуера на Microsoft SQL Server

За повече информация относно терминологията за актуализация на софтуера щракнете върху следния номер на статия, за да я видите в базата данни на Microsoft:

824684 описание на стандартната терминология, използвана за описание на софтуерните актуализации на Microsoft

Допълнителна информация

SQL Server 2008 R2 BPA информация

SQL Server 2008 R2 Best Practice Analyzer (SQL Server 2008 R2 BPA) предоставя правило за откриване на ситуации, при които екземплярът на SQL Server е свързана сървъри, които са конфигурирани за използване и не се прилага корекцията. SQL Server 2008 R2 BPA поддържа SQL Server 2008 и SQL Server 2008 R2.

Ако стартирате инструмента BPA и срещнете предупреждение "Database Engine - свързан сървър памет изтичане корекция липсва," трябва да разглеждат симптомите, споменати в тази статия и приложите сборната актуализация, която е подходяща.

Препратки

Софтуер на правилото

Заглавие на правилото

Идентификатор на правилото

SQL Server 2008 R2 BPA правило

свързан сървър памет изтичане корекция липсва

RID3807






Автор (SME): bruceye
Сценарист: ericzha
Технически редактор: tejasaks
Редактор: v-lynan

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

Общностите ви помагат да задавате и отговаряте на въпроси, да давате обратна връзка и да получавате информация от експерти с богати знания.

Беше ли полезна тази информация?

Доколко сте доволни от качеството на езика?
Какво е повлияло на вашия потребителски опит?
Като натиснете „Подаване“, вашата обратна връзка ще се използва за подобряване на продуктите и услугите на Microsoft. Вашият ИТ администратор ще може да събира тези данни. Декларация за поверителност.

Благодарим ви за обратната връзка!

×