MEMPERBAIKI: pelanggaran akses ketika Anda menjalankan prosedur yang disimpan yang menggunakan kursor pada variabel Daftar Tabel di SQL Server

PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.

Klik disini untuk melihat versi Inggris dari artikel ini: 3138930
Gejala
Misalnya Anda membuat prosedur yang disimpan yang menggunakan kursor pada Daftar Tabel variabel di Microsoft SQL Server 2012 atau SQL Server 2014. Selain itu, prosedur tersimpan pembaruan Daftar Tabel menggunakanMana saat ini dari pernyataan bersama-sama dengan kursor.

Sebagai contoh, disimpan prosedur menyerupai berikut ini:
CREATE PROCEDURE dbo.usp_TestSP AS  BEGIN  DECLARE @TableVar TABLE (SomeInt INT NULL) INSERT @TableVar VALUES (NULL)  DECLARE @curInt INT, @newInt INT SET @newInt = 1  DECLARE ccc CURSOR LOCAL FOR SELECT SomeInt FROM @TableVar WHERE SomeInt IS NULL  OPEN ccc  FETCH NEXT FROM ccc INTO @curInt UPDATE @TableVar SET SomeInt = @newInt WHERE CURRENT OF cccCLOSE ccc  SELECT * FROM @TableVar END 

Ketika Anda menjalankan prosedur tersimpan Anda menggunakan sistem sp_refreshsqlmodule prosedur tersimpan, terjadi pelanggaran akses, dan Anda akan menerima pesan galat yang menyerupai berikut ini:
MSG 596, Level 21, status 1Cannot melanjutkan eksekusi karena sesi berada dalam kondisi kill. MSG 0, Level 20, status 0A parah kesalahan terjadi pada perintah saat ini. Hasilnya, jika ada, harus dibuang.

Dalam situasi ini, galat yang mirip berikut ini juga ditulis ke log galat SQL Server:
tanggal time.730 spid51 SqlDumpExceptionHandler: 51 proses menghasilkan pengecualian fatal c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server mengakhiri proses ini.
date time.730 spid51 * *******************************************************************************
tanggal time.730 spid51 *
tanggal time.730 spid51 * mulai STACK DUMP:
tanggal time.730 spid51 * tanggal waktu spid 51
tanggal time.730 spid51 *
tanggal time.730 spid51 *
tanggal time.730 spid51 * pengecualian alamat penyuratan = 00007FFC270236D5 Module(sqllang+00000000005036D5)
tanggal time.730 spid51 * pengecualian kode = c0000005 EXCEPTION_ACCESS_VIOLATION
tanggal time.730 spid51 * pelanggaran akses terjadi membaca alamat penyuratan 0000006F00620074
tanggal time.730 spid51 * byte masukan Buffer 136 -
tanggal time.730 spid51 * eksekusi sp_refreshsqlmodule N'[dbo]. [usp_TestSP]'
tanggal time.730 spid51 *
tanggal time.730 spid51 *

Pemecahan masalah

Informasi pembaruan kumulatif

Masalah ini telah diperbaiki pada pembaruan berikut:
Rekomendasi: Menginstal pembaruan kumulatif terbaru untuk SQL Server

Setiap pembaruan kumulatif yang baru untuk SQL Server berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan pembaruan kumulatif sebelumnya. Periksa pembaruan kumulatif terbaru untuk SQL Server:
Status
Microsoft telah memastikan bahwa ini merupakan masalah di dalam produk Microsoft sebagaimana tercantum di bagian "Berlaku untuk".
Referensi
Mempelajari tentang terminologi Microsoft yang digunakan untuk menjelaskan pemutakhiran peranti penangkap lunak.

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Proprietà

ID articolo: 3138930 - Ultima revisione: 05/31/2016 10:14:00 - Revisione: 3.0

Microsoft SQL Server 2012 Service Pack 3, Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbexpertiseinter kbsurveynew kbmt KB3138930 KbMtid
Feedback