使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

症状

假设你在 Microsoft SQL Server 2012 或 SQL Server 2014 中创建一个存储过程,该过程在表变量上使用游标。 此外,存储过程通过使用当前语句与光标一起使用的位置 来更新表。例如,存储过程可能类似于以下内容:

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 系统存储过程执行存储过程时,可能会发生访问冲突,并且你可能会收到类似于以下内容的错误消息:

消息596、级别21、状态1Cannot 继续执行,因为会话处于 kill 状态。消息0、级别20、状态0A 当前命令出现严重错误。 应丢弃结果(如果有)。

在这种情况下,也会将类似于以下的错误写入 SQL Server 错误日志:

日期时间。 730 spid51 SqlDumpExceptionHandler: Process 51 生成了严重的异常 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] "日期时间. 730 spid51 * 日期时间 spid51 *

解决方案

累积更新信息

以下更新修复了此问题:

SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

参考

了解 Microsoft 用于描述软件更新的 术语

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×