อาการ
สมมติว่าคุณสร้างกระบวนงานที่เก็บไว้ที่ใช้เคอร์เซอร์บนตัวแปรตารางใน Microsoft SQL Server ๒๐๑๒หรือ SQL Server ๒๐๑๔ นอกจากนี้กระบวนงานที่เก็บไว้จะอัปเดตตารางโดยใช้ตำแหน่งของ คำสั่งปัจจุบันพร้อมกับเคอร์เซอร์ ตัวอย่างเช่นกระบวนงานที่เก็บไว้ของคุณอาจมีลักษณะดังต่อไปนี้:
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
เมื่อคุณเรียกใช้กระบวนงานที่เก็บไว้ของคุณโดยใช้กระบวนงานที่เก็บไว้ของระบบ sp_refreshsqlmodule การละเมิดการเข้าถึงอาจเกิดขึ้นและคุณอาจได้รับข้อความแสดงข้อผิดพลาดที่คล้ายกับต่อไปนี้:
Msg ๕๙๖ระดับ21รัฐ1Cannot ดำเนินการต่อเนื่องเนื่องจากเซสชันอยู่ในสถานะการทำลาย Msg 0 ระดับ20รัฐ0A ข้อผิดพลาดร้ายแรงที่เกิดขึ้นบนคำสั่งปัจจุบัน ผลลัพธ์ถ้ามีควรละทิ้ง
ในสถานการณ์นี้ข้อผิดพลาดที่คล้ายกับต่อไปนี้จะถูกเขียนไปยังแฟ้มบันทึกข้อผิดพลาด SQL Server ด้วย:
วันที่และเวลาของวันที่ spid51 SqlDumpExceptionHandler: ประมวลผล๕๑ข้อยกเว้นร้ายแรงที่สร้างขึ้นจาก c0000005 EXCEPTION_ACCESS_VIOLATION SQL Server is terminating this process.date time.730 spid51 * *******************************************************************************date time.730 spid51 *date time.730 spid51 * BEGIN STACK DUMP:date time.730 spid51 * date time spid 51date time.730 spid51 *date time.730 spid51 *date time.730 spid51 * Exception Address = 00007FFC270236D5 Module(sqllang+00000000005036D5)date time.730 spid51 * Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATIONdate time.730 spid51 * Access Violation occurred reading address 0000006F00620074date time.730 spid51 * Input Buffer 136 bytes -date time.730 spid51 * EXECUTE sp_refreshsqlmodule N'[dbo]. [usp_TestSP] ' วันที่เวลา spid51 ของวันที่ 730 spid51 *
การแก้ไข
ข้อมูลโปรแกรมอัปเดตสะสม
ปัญหานี้ได้รับการแก้ไขแล้วในการอัปเดตต่อไปนี้:
-
การอัปเดตที่สะสม 13สำหรับ SQL Server ๒๐๑๔
-
การอัปเดตที่สะสม 6สำหรับ SQL Server ๒๐๑๔ Service Pack 1 (SP1)
-
การอัปเดตที่สะสม 2สำหรับ SQL Server ๒๐๑๒ Service Pack 3 (SP3)
-
การอัปเดตที่สะสม 11สำหรับ SQL Server ๒๐๑๒ service Pack 2 (SP2)
การอัปเดตที่สะสมใหม่แต่ละรายการสำหรับ SQL Server ประกอบด้วยโปรแกรมแก้ไขด่วนทั้งหมดและการแก้ไขการรักษาความปลอดภัยทั้งหมดที่รวมอยู่ในการอัปเดตที่สะสมก่อนหน้านี้ ตรวจสอบการอัปเดตที่สะสมล่าสุดสำหรับ SQL Server:
สถานะ
Microsoft ยืนยันว่าปัญหานี้เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ซึ่งมีการระบุไว้ในส่วน "นำไปใช้กับ"
อ้างอิง
เรียนรู้เกี่ยวกับคำ ศัพท์เฉพาะ ทางที่ Microsoft ใช้เพื่ออธิบายการอัปเดตซอฟต์แวร์