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

Perlu bantuan lainnya?

Kembangkan keterampilan Anda

JELAJAHI PELATIHAN >

Dapatkan fitur baru terlebih dahulu

GABUNG MICROSOFT INSIDER >

Apakah informasi ini bermanfaat?

Seberapa puaskah Anda dengan kualitas bahasanya?
Apa yang memengaruhi pengalaman Anda?

Terima kasih atas umpan balik Anda!

×