如何在SQL Server 2008上调试EXCEPTION_ACCESS_VIOLATION

时间:2012-07-16 20:11:21

标签: sql-server sql-server-2008

使用数据库的应用程序突然中断。我开始调查并注意到一个简单的计数查询

SELECT count(uberdataid) FROM [Alexander].[dbo].[UberData]

在SQL Server中创建错误:

  

消息0,级别11,状态0,行0发生严重错误   当前命令。结果(如果有的话)应该丢弃

一些想法:

  • 当我查看错误的堆栈跟踪时,它表示存在EXCEPTION_ACCESS_VIOLATION。该异常的名称使我认为查询中可能存在权限问题。但是我在许多不同的用户帐户上得到了完全相同的错误(所有用户帐户都可以在没有问题的情况下查询数据库)。

  • 关于SO(Exception Access Violation in SQL)的讨论让我觉得查询可能会遇到一个挥之不去的记录锁定,但我重启服务器似乎不太可能。

在线其他留言板上还有一些其他未解决的讨论。

有什么想法吗?

Stackoverflow不会让我发布整个跟踪(太长时间)但我很乐意发布相关部分,如果人们需要看到它们。我不知道跟踪中哪些部分最重要。

1 个答案:

答案 0 :(得分:3)

这看起来像是一个SQL Server错误。 EXCEPTION_ACCESS_VIOLATION表示SQL Server内部的代码试图访问“无效”内存(例如,解除引用NULL指针)。它与SQL Server安全设置无关。

即使这可能是一个错误,我建议您运行

DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS, DATA_PURITY, NO_INFOMSGS

在有问题的数据库上。可能存在触发SQL Server错误的损坏。