BUG #: 187868 (pemeliharaan konten)VSTS: 1340145
Microsoft mendistribusikan perbaikan Microsoft SQL Server 2012 dalam satu berkas yang dapat diunduh. Karena perbaikan bersifat kumulatif, setiap Edaran baru berisi semua hotfix dan semua pembaruan keamanan yang disertakan dengan sebelumnya SQL Server 2012 pemutakhiran Edaran.
Gejala
Pertimbangkan skenario berikut ini:
-
Anda membuat prosedur yang disimpan yang menggunakan parameter bernilai tabel (TVP) di Microsoft SQL Server 2012.
-
Anda menggunakan SQL Profiler atau SQL Server perpanjangan peristiwa untuk menangkap RPC: mulai dan RPC: selesai peristiwa.
-
Anda menjalankan permintaan yang menggunakan TVP.
-
Permintaan waktu habis.
Dalam skenario ini, terjadi galat Penjadwal ketidaklancaran, dan permintaan yang berjalan di Penjadwal sama berjalan lambat. Selain itu, berkas dump mini yang dibuat di folder log SQL Server.
Ketika masalah ini terjadi, Anda menerima pesan galat yang menyerupai berikut ini:System.Data.SqlClient.SqlException (0x80131904): Timeout kedaluwarsa. Periode waktu habis berlalu sebelum menyelesaikan operasi atau server tidak merespons.
pada System.Data.SqlClient.SqlInternalConnection.OnError (SqlException pengecualian, Boolean breakConnection) pada System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() di System.Data.SqlClient.TdsParserStateObject.ReadSniError (TdsParserStateObject stateObj, UInt32 galat) di System.Data.SqlClient.TdsParserStateObject.ReadSni (DbAsyncResult asyncResult, TdsParserStateObject stateObj) di System.Data.SqlClient.TdsParserStateObject.ReadNetworkPacket() di System.Data.SqlClient.TdsParserStateObject.ReadByte() di System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior SqlCommand cmdHandler SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) di System.Data.SqlClient.SqlCommand.FinishExecuteReader (SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) di System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (CommandBehavior cmdBehavior RunBehavior runBehavior, Boolean returnStream, Boolean asinkron) di System.Data.SqlClient.SqlCommand.RunExecuteReader (CommandBehavior cmdBehavior RunBehavior runBehavior, Boolean returnStream, String metode, DbAsyncResult hasil) di System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery (DbAsyncResult hasil, String methodName, Boolean sendToPipe) pada System.Data.SqlClient.SqlCommand.ExecuteNonQuery() pada TVPApp.Program.Main (String] args)Penjadwal non-menghasilkan galat bersama-sama dengan pesan galat yang menyerupai berikut ini dicatat dalam log galat SQL Server:
< Tanggal >< waktu > Server menggunakan 'dbghelp.dll' versi '4.0.5'
< Tanggal >< waktu > Server *** tidak untuk mendapatkan thread konteks spid # <Date><Time> Server * ******************************************************************************* < Tanggal >< waktu > Server * < Tanggal >< waktu > Server * mulai STACK DUMP: < Tanggal >< waktu > Server * < tanggal >< waktu > spid # < Tanggal >< waktu > Server * < Tanggal >< waktu > Server * Non-menghasilkan Scheduler < Tanggal >< waktu > Server * <Date><Time> Server * ******************************************************************************* < Tanggal >< waktu > Server memori tanda tangan untuk dump adalah 0x000000000000002C < Tanggal >< waktu > eksternal Server dump proses kembali kode 0x20000001. Proses eksternal dump kembali tidak ada kesalahan. Proses Server < tanggal >< waktu > 0:0:0 (0x1670) pekerja 0x0000000004EDE160 sepertinya non-menghasilkan Scheduler 5. Waktu pembuatan Thread: 13014210386757. Kira-kira Thread CPU digunakan: kernel 0 ms, ms. pengguna 70106 proses pemanfaatan 16%. Sistem Idle 77%. Interval: 70140 ms. < Tanggal >< waktu > proses Server 0:0:0 (0x1670) pekerja 0x0000000004EDE160 sepertinya non-menghasilkan Scheduler 5. Waktu pembuatan Thread:Penyebab
Masalah ini terjadi karena kesalahan mesin pangkalan data SQL Server 2012. Kolom teks dalam TVP diterapkan sebagai masukkan string atau buffer, dan peningkatan jumlah baris meningkatkan jumlah buffer. Namun, proses yang rilis buffer memakan waktu. Oleh karena itu, non-menghasilkan scheduler kesalahan yang dihasilkan ketika rilis dan menyusutkan operasi terjadi.
Catatan Masalah serupa yang telah disampaikan di artikel Pangkalan Pengetahuan Microsoft berikut ini. Namun, paket pemutakhiran kumulatif yang dijelaskan di artikel ini bukan untuk masalah waktu habis permintaan.MEMPERBAIKI 2520808 : Non-menghasilkan scheduler kesalahan ketika Anda menjalankan permintaan yang menggunakan TVP di SQL Server 2008 atau SQL Server 2008 R2 jika SQL Profiler atau SQL Server perpanjangan peristiwa digunakan
Pemecahan masalah
Informasi pembaruan kumulatif
Paket pembaruan kumulatif 5 untuk SQL Server 2012 Paket Layanan 1 (SP1)
Perbaikan untuk masalah ini pertama kali dirilis pada 5 pembaruan kumulatif. Untuk informasi selengkapnya tentang cara mendapatkan paket pembaruan kumulatif ini untuk SQL Server 2012, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
2861107 kumulatif paket pembaruan 5 untuk SQL Server 2012Catatan Karena edisi ini kumulatif, setiap edaran perbaikan baru berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan sebelumnya SQL Server 2012 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:
2772858 bangun SQL Server 2012 yang dirilis setelah SQL Server 2012 Paket Layanan 1 kini telah dirilis
Pemecahan masalah
Untuk mengatasi masalah ini, gunakan salah satu dari metode berikut ini:
-
Jangan menggunakan SQL Profiler atau SQL Server perpanjangan peristiwa.
-
Klik untuk mengosongkan RPC: mulai dan RPC: selesai kotak centang dalam definisi trace.
Informasi lebih lanjut
Perbaikan ini tidak berlaku untuk SQL Server 2008 atau SQL Server 2008 R2 ketika KB ini diterbitkan. Jika pengguna mengalami masalah yang sama di SQL Server 2008 atau SQL Server 2008 R2 bahkan setelah pengguna menerapkan paket yang dijelaskan dalam artikel berikut ini, memvalidasi jika ada waktu habis permintaan dan menentukan apakah batas waktu dapat diatasi. Jika tidak, kirimkan permintaan untuk menerapkan perbaikan SQL Server 2008 atau SQL Server 2008 R2.
MEMPERBAIKI 2520808 : Non-menghasilkan scheduler kesalahan ketika Anda menjalankan permintaan yang menggunakan TVP di SQL Server 2008 atau SQL Server 2008 R2 jika SQL Profiler atau SQL Server perpanjangan peristiwa digunakan
Informasi tumpukan panggilan
sqlmin!CLinkedMap<__int64,CCheckReadersAndWriters::CCounts>::FLookup+0x29sqlmin!CCheckReadersAndWriters::Release+0x69
sqlmin!CMainIlb::{dtor}+0x3d sqlmin!CMainIlb::`scalar deleting destructor'+0x3d sqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13 sqlmin!CMainIlb::Release+0xf0 sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80 sqllang!CTraceTvpData::{dtor}+0x14 sqllang!CTraceTvpData::`scalar deleting destructor'+0x1e sqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x33 sqllang!CRpcTraceHelper::~CRpcTraceHelper+0x70 sqllang!CRPCExecEnv::~CRPCExecEnv+0x2ab sqllang!CRPCExecEnv::`scalar deleting destructor'+0x14 sqllang!process_request+0x10b1 sqllang!process_commands+0x51c sqldk!SOS_Task::Param::Execute+0x21e sqldk!SOS_Scheduler::RunTask+0xa8 sqldk!SOS_Scheduler::ProcessTasks+0x299 sqldk!SchedulerManager::WorkerEntryPoint+0x261 sqldk!SystemThread::RunWorker+0x8f sqldk!SystemThreadDispatcher::ProcessWorker+0x3c8 sqldk!SchedulerManager::ThreadEntryPoint+0x236 kernel32!BaseThreadInitThunk+0xd ntdll!RtlUserThreadStart+0x1d
sqlmin!CLinkedMap<__int64,CCheckReadersAndWriters::CCounts>::FDelete+0x34sqlmin!CCheckReadersAndWriters::Release+0xfb
sqlmin!CMainIlb::{dtor}+0x3d sqlmin!CMainIlb::`scalar deleting destructor'+0x3d sqlmin!CBlobHandleFactoryMain::ReleaseILockBytes+0x13 sqlmin!CMainIlb::Release+0xf0 sqllang!CTraceRpcBinaryStream::~CTraceRpcBinaryStream+0x80 sqllang!CTraceTvpData::{dtor}+0x11 sqllang!CRpcTraceHelper::CleanUpTraceTvpData+0x55 sqllang!CRpcTraceHelper::TracePostExec+0x1bf sqllang!CRPCExecEnv::OnExecFinish+0xaa sqllang!CProtocolHeaderInfo::{dtor}+0xffffffff`ffb158e2 sqllang!process_request+0x764 sqllang!process_commands+0x51c sqldk!SOS_Task::Param::Execute+0x21e sqldk!SOS_Scheduler::RunTask+0xa8 sqldk!SOS_Scheduler::ProcessTasks+0x29a sqldk!SchedulerManager::WorkerEntryPoint+0x261 sqldk!SystemThread::RunWorker+0x8f sqldk!SystemThreadDispatcher::ProcessWorker+0x3c8 sqldk!SchedulerManager::ThreadEntryPoint+0x236 kernel32!BaseThreadInitThunk+0x1a ntdll!RtlUserThreadStart+0x1d
Status
Microsoft telah memastikan bahwa ini merupakan masalah di dalam produk Microsoft sebagaimana tercantum di bagian "Berlaku untuk".
Author: jannaw
Writer: v-yipli Pemeriksa teknis: pradm; jannaw; hozhan Editor: v-mordew