MS SQL Server 2005:致命错误823

一个MS SQL服务器 – 数据库工作正常的最后几个星期突然抛出以下错误:

System.Data.SqlClient.SqlException:警告:在date/时间发生致命错误823
记下错误和时间,并联系您的系统pipe理员。

这个错误是什么意思,我能做些什么呢?

我试过了

DBCC CHECKDB('mydatabase') 

但我只有更多的错误信息。

提前致谢!

正如Splattne所说,823意味着有一个I / O子系统问题。 823消息就是我所说的“硬I / O错误”。 SQL Server要求操作系统读取一个页面,它说不 – 这意味着I / O子系统无法读取有问题的页面。

CHECKDB输出意味着它不能创build它用于获取数据库的事务一致性时间点视图的内部数据库快照。 这有几个不同的原因:

  1. 在存储数据库的数据文件的卷上可能没有任何可用空间
  2. SQL服务帐户在包含数据库数据文件的目录中可能没有创build文件权限

如果这两种情况都不是这样,则可以创build自己的数据库快照并运行DBCC CHECKDB。 你有一个,运行以下:

DBCC CHECKDB(yourdbname)WITH NO_INFOMSGS,ALL_ERRORMSGS

如果你发布结果,我会为你解释(我写了DBCC CHECKDB for SQL 2005)

无论结果如何,您都在考虑从备份恢复,将数据提取到新的数据库或者运行修复。 每个都涉及不同数量的停机时间和数据丢失。 你还必须做一些根本原因分析,弄清楚发生了什么事情导致腐败的第一位。

顺便说一句 – 你有页面校验和启用? 您是否在SQL错误日志或Windows应用程序事件日志中查看是否有任何损坏迹象或I / O子系统出现问题?

希望这可以帮助。

哎哟! 致命错误823表示存在物理磁盘错误。 具体而言,SQL Server请求的页面无法读取。 这是一个非常严重的错误,表明该数据库或服务器的总体问题。 我希望你有一个数据库的备份。

我会检查该服务器,系统和应用程序上的事件日志。 看看是否有任何磁盘相关的错误。 数据库上CHECKDB的细节是什么?

  DBCC CheckDB('< Database name >) WITH NO_INFOMSGS. 

我得到了同样的错误,但这是由于特权。一旦我给了驱动器上的所有权限,即Windows驱动器,其工作没有任何错误。