Berlaku Untuk
SQL Server 2008 Standard SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Workgroup

BUG #: 115124 (pemeliharaan konten)Nomor bug VSTS: 316475Nomor bug VSTS: 365460

Microsoft mendistribusikan perbaikan Microsoft SQL Server 2008 sebagai satu berkas yang dapat diunduh. Karena perbaikan bersifat kumulatif, setiap Edaran baru berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan sebelumnya SQL Server 2008 edaran perbaikan.

Gejala

Di Microsoft SQL Server 2005 atau SQL Server 2008, Anda menjalankan prosedur yang disimpan di server jauh menggunakan terkait server. Setelah Anda menjalankan prosedur tersimpan berkali-kali, Anda mungkin menemukan bahwa penggunaan memori SQL Server layanan meningkat dengan cepat. Selain itu, galat berbagai pesan penipisan terkait memori di ruang alamat MemTolLeave dapat masuk di file errorlog SQL Server 2008.Catatan Anda mungkin juga mengalami masalah ini ketika Anda menggunakan, pengiriman log atau replikasi pencerminan. Fitur ini dapat menggunakan prosedur yang tersimpan yang menggunakan server tertaut.

Penyebab

Masalah ini disebabkan oleh kebocoran memori yang terjadi ketika Anda menjalankan permintaan yang menggunakan server tertaut. Kebocoran terjadi ketika Anda panggilan prosedur jauh yang disimpan. Ada dua jenis kemungkinan kebocoran:

  • Nilai kembali panggilan prosedur tersimpan, yang selalu bocor. Ini adalah kebocoran kecil tetapi biasa.

  • Panggilan prosedur jauh tersimpan yang telah habis parameter jenis data sqlvariant .

Pemecahan masalah

SQL Server 2008 Paket Layanan 1

Perbaikan untuk masalah ini pertama kali dirilis di pembaruan kumulatif 3 untuk SQL Server 2008 Paket Layanan 1. Untuk informasi lebih lanjut tentang paket pembaruan kumulatif ini, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:

971491 kumulatif paket pembaruan 3 untuk SQL Server 2008 Paket Layanan 1Catatan Karena edisi ini kumulatif, setiap edaran perbaikan baru berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan sebelumnya SQL Server 2008 edaran perbaikan. Microsoft menganjurkan agar Anda menerapkan edaran perbaikan terbaru yang berisi hotfix ini. Untuk informasi selengkapnya, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:

970365 bangun SQL Server 2008 yang dirilis setelah SQL Server 2008 Paket Layanan 1 kini telah dirilisMicrosoft SQL Server 2008 perbaikan dibuat untuk paket layanan SQL Server tertentu. Anda harus menerapkan perbaikan terbaru SQL Server 2008 Paket Layanan 1 untuk penginstalan SQL Server 2008 Paket Layanan 1. Secara default, setiap perbaikan terbaru yang disediakan dalam paket layanan SQL Server yang disertakan dalam paket layanan SQL Server.

SQL Server 2005 Paket Layanan 3

Perbaikan untuk masalah ini pertama kali dirilis di pembaruan kumulatif 6 untuk SQL Server 2005 Paket Layanan 3. Untuk informasi lebih lanjut tentang paket pembaruan kumulatif ini, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:

974648 kumulatif paket pembaruan 6 untuk SQL Server 2005 Paket Layanan 3Catatan Karena edisi ini kumulatif, setiap edaran perbaikan baru berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan sebelumnya SQL Server 2005 edaran perbaikan. Microsoft menganjurkan agar Anda menerapkan edaran perbaikan terbaru yang berisi hotfix ini. Untuk informasi selengkapnya, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:

960598 SQL Server 2005 edisi yang dirilis setelah SQL Server 2005 Paket Layanan 3 kini telah dirilisMicrosoft SQL Server 2005 perbaikan dibuat untuk paket layanan SQL Server tertentu. Anda harus menerapkan perbaikan terbaru SQL Server 2005 Paket Layanan 3 untuk penginstalan SQL Server 2005 Paket Layanan 3. Secara default, setiap perbaikan terbaru yang disediakan dalam paket layanan SQL Server yang disertakan dalam paket layanan SQL Server.

Versi rilis SQL Server 2008

Penting Anda harus menginstal perbaikan ini jika Anda menjalankan versi rilis SQL Server 2008.Perbaikan untuk masalah ini pertama kali diedarkan dalam 8 pembaruan kumulatif. Untuk informasi selengkapnya tentang cara mendapatkan paket pembaruan kumulatif ini untuk SQL Server 2008, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:

Paket 8 pembaruan 975976 kumulatif untuk SQL Server 2008Catatan Karena edisi ini kumulatif, setiap edaran perbaikan baru berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan sebelumnya SQL Server 2008 edaran perbaikan. Kami sarankan Anda mempertimbangkan untuk menerapkan edaran perbaikan terbaru yang berisi hotfix ini. Untuk informasi selengkapnya, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:

956909 bangun SQL Server 2008 yang dirilis setelah SQL Server 2008 dirilis

Status

Microsoft telah memastikan bahwa ini merupakan masalah di dalam produk Microsoft sebagaimana tercantum di bagian "Berlaku untuk".

Informasi lebih lanjut

Informasi tumpukan panggilan

Kebocoran memori ini dapat dilihat di memori default. Kebocoran sekurangnya satu pola akan 40 byte. Ini adalah ukuran struktur CXVariant untuk nilai kembali. LFH timbunan mungkin tidak menunjukkan byte 40 bocor dengan benar dan dapat menunjukkan kebocoran 4 KB untuk 64 KB kisaran jika Anda menggunakan ! tumpukan < heaphandle > - -k pada berkas dump penuh.Catatan Secara default, Windows Server 2008, Windows Vista, Windows 7 dan Windows Server 2008 R2 akan menggunakan LFH memori untuk memori default dalam proses SQL Server.UMDH atau DebugDiag menunjukkan tumpukan bocor menjadi sifat berikut ini. UMDH, DebugDiag, dan ! tumpukan-l perintah semua menunjukkan ini sebagai memori umum untuk kebocoran kembali status masalah:Catatan Tergantung pada penyedia yang sedang digunakan, informasi penyedia mungkin tidak sqlncli10.ntdll!RtlAllocateHeap+0001B970sqlncli10!CDataSource::DataConvert+0000C898 sqlncli10!CDataSource::OLEDBdataFromSQLdata+0000018C sqlncli10!CStmt::ProcessReturnStatus+000001FAsqlncli10!BATCHCTX::Run+000005BAsqlncli10!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 >+0000004Dsqlservr!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> >+0000001Dsqlservr!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> >+00000092sqlservr!CWrapICommandText::Execute+00000230sqlservr!CRpcInterfaces::Relay+00000982sqlservr!CStmtExecProc::XretRemoteExec+00000732sqlservr!CRemoteProcExecLevel::Execute+00000160sqlservr!CStmtExecProc::XretWrapRemoteExec+000001D5sqlservr!CStmtExecProc::XretExecExecute+0000078Esqlservr!CXStmtExecProc::XretExecute+0000004Esqlservr!CExecStmtLoopVars::ExecuteXStmtAndSetXretReturn+0000003Csqlservr!CMsqlExecContext::ExecuteStmts<1,1>+000002AAsqlservr!CMsqlExecContext::FExecute+00001023sqlservr!CSQLSource::Execute+00001091sqlservr!process_request+000006BC sqlservr!process_commands+000003C4 sqlservr!SOS_Task::Param::Execute+0000016Bsqlservr!SOS_Scheduler::RunTask+000001A5sqlservr!SOS_Scheduler::ProcessTasks+000002E7 Here are the call stacks for the SQL Variant output parameter leak for sql_variant:ntdll!RtlAllocateHeap+0001B970sqlncli10!CDataSource::DataConvert+0000BAD2sqlncli10!CDataSource::OLEDBdataFromSQLdata+00000D18sqlncli10!CStmt::ProcessReturnValue+00000BC5sqlncli10!CTdsSqloledb::OnReturnValue+00000018sqlncli10!BATCHCTX::ProcessReturnValue+00000366sqlncli10!BATCHCTX::Run+000004ADsqlncli10!CDBConnection::ProcessTDSStream+000001A7sqlncli10!CStmt::SQLExecRPC+00000602 sqlncli10!CCommand::ExecuteHelper+00000250sqlncli10!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+00000230sqlservr!CRpcInterfaces::Relay+00000982 sqlservr!CStmtExecProc::XretRemoteExec+00000732 sqlservr!CRemoteProcExecLevel::Execute+00000160 sqlservr!CStmtExecProc::XretWrapRemoteExec+000001D5sqlservr!CStmtExecProc::XretExecExecute+0000078Esqlservr!CXStmtExecProc::XretExecute+0000004Esqlservr!CExecStmtLoopVars::ExecuteXStmtAndSetXretReturn+0000003Csqlservr!CMsqlExecContext::ExecuteStmts<1,1>+000002AA sqlservr!CMsqlExecContext::FExecute+00001023sqlservr!CSQLSource::Execute+00001091sqlservr!process_request+000006BC sqlservr!process_commands+000003C4 sqlservr!SOS_Task::Param::Execute+0000016B ntdll!RtlAllocateHeap+0001B970sqlncli10!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+000001A7sqlncli10!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()+00000053sqlservr!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+00000230sqlservr!CRpcInterfaces::Relay+00000982 sqlservr!CStmtExecProc::XretRemoteExec+00000732sqlservr!CRemoteProcExecLevel::Execute+00000160sqlservr!CStmtExecProc::XretWrapRemoteExec+000001D5sqlservr!CStmtExecProc::XretExecExecute+0000078E sqlservr!CXStmtExecProc::XretExecute+0000004E sqlservr!CExecStmtLoopVars::ExecuteXStmtAndSetXretReturn+0000003C sqlservr!CMsqlExecContext::ExecuteStmts<1,1>+000002AA sqlservr!CMsqlExecContext::FExecute+00001023 sqlservr!CSQLSource::Execute+00001091sqlservr!process_request+000006BC sqlservr!process_commands+000003C4

Referensi

Untuk informasi selengkapnya tentang Model pelayanan inkremental untuk SQL Server, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:

935897 Model pelayanan inkremental tersedia dari tim SQL Server untuk memberikan hotfix untuk masalah yang dilaporkanUntuk informasi selengkapnya tentang skema penamaan untuk pemutakhiran SQL Server, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:

822499 Skema penamaan baru untuk paket pembaruan perangkat lunak Microsoft SQL ServerUntuk informasi selengkapnya tentang peristilahan pemutakhiran perangkat lunak, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:

824684 Deskripsi tentang terminologi standar yang digunakan untuk menjelaskan pembaruan perangkat lunak Microsoft

Informasi lebih lanjut

SQL Server 2008 R2 BPA informasi

SQL Server 2008 R2 Penganalisis praktik terbaik (SQL Server 2008 R2 BPA) menyediakan aturan untuk mendeteksi situasi di mana SQL Server misalnya terkait server yang dikonfigurasi untuk menggunakan, dan perbaikan ini tidak diterapkan. SQL Server 2008 R2 BPA mendukung SQL Server 2008 dan SQL Server 2008 R2.Jika Anda menjalankan alat BPA dan mendapatkan peringatan "Mesin pangkalan data - perbaikan kebocoran memori server tertaut hilang," Anda perlu memeriksa gejala disebutkan dalam artikel ini, dan menerapkan pemutakhiran kumulatif yang sesuai.

Referensi

Perangkat lunak aturan

Judul aturan

Pengidentifikasi aturan

Aturan BPA SQL Server 2008 R2

server tertaut memori kebocoran perbaikan hilang

RID3807

Pengarang (SME): bruceyePenulis: ericzhaPemeriksa teknis: tejasaksEditor: v-lynan

Perlu bantuan lainnya?

Ingin opsi lainnya?

Jelajahi manfaat langganan, telusuri kursus pelatihan, pelajari cara mengamankan perangkat Anda, dan banyak lagi.