Microsoft mendistribusikan perbaikan Microsoft SQL Server 2012 dalam satu file yang dapat diunduh. Karena perbaikan bersifat kumulatif, setiap rilis baru berisi semua hotfix dan semua pembaruan keamanan yang disertakan dengan rilis pembaruan SQL Server 2012 sebelumnya.
Gejala
Pertimbangkan skenario berikut:
-
Anda membuat prosedur tersimpan yang menggunakan parameter bernilai tabel (TVP) di Microsoft SQL Server 2012.
-
Anda menggunakan SQL Profiler atau SQL Server Extended Events untuk merekam RPC:Starting dan RPC:Completed events.
-
Anda menjalankan kueri yang menggunakan TVP.
-
Waktu kueri habis.
Dalam skenario ini, kesalahan penjadwal yang tidak menghasilkan terjadi, dan kueri yang berjalan pada penjadwal yang sama berjalan lambat. Selain itu, file dump mini dihasilkan dalam folder log SQL Server.Saat masalah ini terjadi, Anda menerima pesan kesalahan yang menyerupan berikut ini:
System.Data.SqlClient.SqlException (0x80131904): Waktu habis kedaluwarsa. Periode waktu habis berlalu sebelum penyelesaian operasi atau server tidak merespons.at System.Data.SqlClient.SqlInternalConnection.OnError(pengecualian SqlException, Boolean breakConnection)at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()at System.Data.SqlClient.TdsParsErStateObject.ReadSniError(TdsParserStateObject stateObj, Kesalahan UInt32)at System.Data.SqlClient.TdsParserStateObject.ReadSni(DbAsyncResult asyncResult, TdsParserStateObject stateObj)at System.Data.SqlClient.TdsParsErStateObject.ReadNetworkPacket()at System.Data.SqlClient.TdsParsErStateObject.ReadByte()at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, Data SqlDataReaderStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()at TVPApp.Program.Main(String[] args)
Kesalahan penjadwal yang tidak menghasilkan bersama-sama dengan pesan kesalahan yang terlihat seperti berikut ini dicatat dalam log kesalahan SQL Server:
<Tanggal><Waktu> Server Menggunakan versi 'dbghelp.dll' '4.0.5'<Tanggal><Waktu> Server ***Tidak bisa mendapatkan konteks utas untuk spid #<Tanggal><Waktu> Server * *******************************************************************************><2 *******************************************************************************><8 Tanggal><Waktu> Server *><6 Tanggal><Waktu> Server * BEGIN STACK DUMP:><0 Tanggal><Waktu> Server * <Tanggal><Waktu> spid #><8 Tanggal><Waktu> Server *><2 Date><Time> Server * Non-yielding Scheduler><6 Date><Time> Server *<Date><Time> Server * *******************************************************************************<><Time> Server Stack Signature for the dump 0x000000000000002C<Date><Time> Server External dump process return code 0x20000001.Proses pembuangan eksternal tidak mengembalikan kesalahan.<Tanggal><Waktu> Proses Server 0:0:0 (0x1670) Pekerja 0x0000000004EDE160 tampaknya tidak menghasilkan pada Scheduler 5. Waktu pembuatan utas: 13014210386757. CPU Thread Approx Digunakan: kernel 0 ms, pengguna 70106 ms. Pemanfaatan Proses 16%. Sistem Diam 77%. Interval: 70140 ms.<Tanggal><Waktu> Proses Server 0:0:0 (0x1670) Pekerja 0x0000000004EDE160 tampaknya tidak menghasilkan pada Scheduler 5. Waktu pembuatan utas:
Penyebab
Masalah ini terjadi karena kesalahan dalam Mesin Database SQL Server 2012. Kolom teks di TVP diterapkan sebagai sisipkan string atau buffer, dan peningkatan jumlah baris akan menambah jumlah buffer. Namun, proses yang melepaskan buffer memakan waktu. Oleh karena itu, kesalahan penjadwal yang tidak menghasilkan dihasilkan ketika operasi rilis dan ciutkan terjadi. Catatan Masalah serupa telah diatasi dalam artikel basis Pengetahuan Microsoft berikut ini. Namun, paket pembaruan kumulatif yang dijelaskan dalam artikel ini bukan untuk masalah batas waktu kueri.
2520808 MEMPERBAIKI: Kesalahan penjadwal yang tidak menghasilkan ketika Anda menjalankan kueri yang menggunakan TVP di SQL Server 2008 atau di SQL Server 2008 R2 jika SQL Profiler atau SQL Server Acara Diperpanjang digunakan
Resolusi
Informasi pembaruan kumulatif
Paket pembaruan kumulatif 5 untuk SQL Server 2012 Paket Layanan 1 (SP1)
Perbaikan untuk masalah ini pertama kali dirilis dalam Pembaruan Kumulatif 5. Untuk informasi selengkapnya tentang cara mendapatkan paket pembaruan kumulatif ini untuk SQL Server 2012, klik nomor artikel berikut ini untuk menampilkan artikel di Pangkalan Pengetahuan Microsoft:
2861107 Paket pembaruan kumulatif 5 untuk SQL Server 2012Note Karena build bersifat kumulatif, setiap rilis perbaikan baru berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan rilis perbaikan SQL Server 2012 sebelumnya. Kami menyarankan Agar Anda mempertimbangkan untuk menerapkan rilis perbaikan terbaru yang berisi hotfix ini. Untuk informasi selengkapnya, klik nomor artikel berikut untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
2772858 Build SQL Server 2012 yang dirilis setelah SQL Server 2012 Service Pack 1 dirilis
Penyelesaian Masalah
Untuk mengatasi masalah ini, gunakan salah satu metode berikut ini:
-
Jangan gunakan SQL Profiler atau SQL Server Acara Diperpanjang.
-
Klik untuk menghapus kotak centang RPC:Mulai dan RPC:Selesai dalam definisi jejak.
Status
Microsoft telah mengonfirmasi bahwa ini adalah masalah pada produk Microsoft yang tercantum di bagian "Berlaku untuk".