一个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它用于获取数据库的事务一致性时间点视图的内部数据库快照。 这有几个不同的原因:
如果这两种情况都不是这样,则可以创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驱动器,其工作没有任何错误。