使用 Microsoft 登入
登入或建立帳戶。
您好:
選取其他帳戶。
您有多個帳戶
選擇您要用來登入的帳戶。

錯誤 #: 115124 (內容維護)
VSTS 錯誤編號︰ 316475
VSTS 錯誤編號︰ 365460

Microsoft 會為一個可下載的檔案散佈 Microsoft SQL Server 2008年的修正程式。的修正程式是累積的因為每個新版本包含的所有 hotfix,並隨附於先前的 SQL Server 2008年所有安全性修正程式會都修正版本。

狀況

在 Microsoft SQL Server 2005年中,或在 SQL Server 2008年中,您將在使用連結的伺服器的遠端伺服器上執行預存程序。多次執行預存程序之後,您可能會發現 SQL Server 服務的記憶體使用量會快速增加。此外,SQL Server 2008年錯誤記錄檔中可能會記錄各種錯誤訊息相關的耗盡MemTolLeave的位址空間中的記憶體。

注意當您使用複寫、 記錄傳送或鏡像,也可能會遇到這個問題。這些功能可能會使用使用連結的伺服器的預存程序。

原因

這個問題被因為當您執行查詢,它使用連結的伺服器時,就會發生記憶體遺漏。當您呼叫遠端的預存程序時,就會發生遺漏。有兩種潛在的遺漏︰

  • 預存程序呼叫中,永遠遺漏傳回值。這是一個小型但一般溢位。

  • 遠端預存程序呼叫具有 OUT 參數的sqlvariant資料型別。

解決方案

SQL Server 2008 Service Pack 1


SQL Server 2008 Service Pack 1 的第一次這個問題的修正程式釋放累積的更新 3] 中。如需有關此累積更新套件的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件︰

971491累計更新套件 3,SQL Server 2008 Service Pack 1注意因為組建是累計的每個新的修正程式版本會包含所有的 hotfix,並隨附於先前的 SQL Server 2008年所有安全性修正程式會都修正版本。Microsoft 建議您考慮將套用最新的修正程式版本,其中包含此 hotfix。如需詳細資訊,按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:

SQL Server 2008年建置 SQL Server 2008 Service Pack 1 發行之後所發行的970365
Microsoft SQL Server 2008 hotfix 會建立特定的 SQL Server service pack。您必須將 SQL Server 2008 Service Pack 1 hotfix 套用至的 SQL Server 2008 Service Pack 1 安裝。根據預設,SQL Server service pack 中所提供的任何 hotfix 併入下一步的 SQL Server service pack。

SQL Server 2005 Service Pack 3


SQL Server 2005 的 Service Pack 3 的第一次這個問題的修正程式釋放累積的更新 6] 中。如需有關此累積更新套件的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件︰

974648累計更新套件 6,SQL Server 2005 的 Service Pack 3注意因為組建是累計的每個新的修正程式版本會包含所有的 hotfix,和先前的 SQL Server 2005 隨附的所有安全性修正都修正版本。Microsoft 建議您考慮將套用最新的修正程式版本,其中包含此 hotfix。如需詳細資訊,按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:

SQL Server 2005 建置 SQL Server 2005 的 Service Pack 3 發行之後所發行的960598
Microsoft SQL Server 2005年的 hotfix 會建立特定的 SQL Server service pack。您必須將 SQL Server 2005 的 Service Pack 3 hotfix 套用至的 SQL Server 2005 的 Service Pack 3 安裝。根據預設,SQL Server service pack 中所提供的任何 hotfix 併入下一步的 SQL Server service pack。

SQL Server 2008年的發行版本

重要如果您執行 SQL Server 2008年的發行版本,您必須安裝此修正程式。

這個問題的修正程式首次發表中累積的更新 8。如需有關如何取得此累積更新套件,SQL Server 2008 的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件︰

975976累計 SQL Server 2008 中更新套件 8注意因為組建是累計的每個新的修正程式版本會包含所有的 hotfix,並隨附於先前的 SQL Server 2008年所有安全性修正程式會都修正版本。我們建議您考慮將套用最新的修正程式版本,其中包含此 hotfix。如需詳細資訊,按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:

SQL Server 2008年建置 SQL Server 2008年發行之後所發行的956909

狀態

Microsoft 已確認這是<套用>一節所列出的 Microsoft 產品的問題。

更多的資訊

呼叫堆疊資訊

預設堆積中,可以看到此記憶體流失。至少一個遺漏的模式將是 40 個位元組。這是傳回值的 CXVariant 結構的大小。LFH 堆積可能不會顯示 40 位元組適當地遺漏,而且可能會用來顯示是否您使用的 4 KB 的 64 KB 的範圍外洩! 堆積 < heaphandle >-a-k命令的完整的傾印檔案。

注意根據預設,Windows Server 2008,Windows Vista、 Windows 7 中,Windows Server 2008 R2 會在 SQL Server 處理序中的預設堆積使用 LFH 堆積。

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 小組製作報告的問題的 hotfix


如需有關 SQL Server 更新的命名結構描述的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件︰

822499新命名的結構描述為 Microsoft SQL Server 軟體更新套件的

如需有關軟體更新術語的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:

用來描述 Microsoft 軟體更新標準術語的編號 824684描述

更多的資訊

SQL Server 2008 R2 BPA 資訊

「 SQL Server 2008 R2 最佳練習分析器 」 (SQL Server 2008 R2 BPA) 可提供某規則會偵測到 SQL Server 執行個體已連結的使用中,設定伺服器的情況下,就不會套用此修正程式。SQL Server 2008 R2 BPA 支援 SQL Server 2008年和 SQL Server 2008 R2。

如果您執行 BPA 工具,並發生警告,「 資料庫引擎-遺漏,連結的伺服器記憶體遺漏修正 」 您需要檢查本文中所述的徵狀,並套用適合此累積更新程式。

參考

規則軟體

規則標題

規則識別項

SQL Server 2008 R2 BPA 規則

連結的伺服器記憶體遺漏修正遺失

RID3807






作者 (SME): bruceye
寫入器︰ ericzha
技術編審︰ tejasaks
編輯器︰ v lynan

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?
按下 [提交] 後,您的意見反應將用來改善 Microsoft 產品與服務。 您的 IT 管理員將能夠收集這些資料。 隱私權聲明。

感謝您的意見反應!

×