Triệu chứng
Giả định rằng bạn tạo ra một thủ tục được lưu trữ sử dụng con trỏ trên biến số của bảng trong Microsoft SQL Server 2012 hoặc SQL Server 2014. Ngoài ra, thủ tục được lưu trữ Cập Nhật bảng bằng cách sử dụng vị trí hiện tại của tuyên bố cùng với con trỏ. Ví dụ, thủ tục được lưu trữ của bạn có thể trông giống như sau:
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
Khi bạn thực thi thủ tục được lưu trữ bằng cách sử dụng quy trình được lưu trữ hệ thống sp_refreshsqlmodule , bạn có thể xảy ra vi phạm truy nhập và bạn có thể nhận được các thông báo lỗi giống như sau:
Msg 596, mức 21, trạng thái 1Không thể tiếp tục thực hiện vì phiên là trong trạng thái Kill. Msg 0, mức 20, một lỗi nghiêm trọng xảy ra ở lệnh hiện tại. Kết quả, nếu có, hãy loại bỏ.
Trong trường hợp này, các lỗi tương tự như sau cũng được viết vào Nhật ký lỗi SQL Server:
thời gian ngày tháng. 730 spid51 SqlDumpExceptionHandler: quy trình 51 tạo ra ngoại lệ tử vong 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] ' thời gian ngày tháng. 730 spid51 * thời gian ngày. 730 spid51 *
Giải pháp
Thông tin Cập Nhật tích lũy
Sự cố này đã được khắc phục trong các bản Cập Nhật sau đây:
-
Cập Nhật tích lũy 13 cho SQL Server 2014
-
Cập Nhật tích lũy 6 cho SQL Server 2014 gói dịch vụ 1 (SP1)
-
Cập Nhật tích lũy 2 cho SQL Server 2012 gói dịch vụ 3 (SP3)
-
Bản Cập Nhật tích lũy 11 cho SQL Server 2012 gói dịch vụ 2 (SP2)
Mỗi bản Cập Nhật tích lũy mới cho SQL Server chứa tất cả các hotfix và tất cả các bản sửa lỗi bảo mật đã được đưa vào bản Cập Nhật tích lũy trước đó. Kiểm tra các bản Cập Nhật tích lũy mới nhất cho SQL Server:
Trạng thái
Microsoft đã xác nhận đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".
Tham khảo
Tìm hiểu về thuật ngữ mà Microsoft sử dụng để mô tả các bản cập nhật phần mềm.