Сервер MS SQL - база данных, которая работала нормально последние недели, неожиданно выдала следующую ошибку:
System.Data.SqlClient.SqlException: Предупреждение: критическая ошибка 823 произошла в дата / время
Запишите ошибку и время и обратитесь к системному администратору.
Что означает эта ошибка и что с ней делать?
Я попытался
DBCC CHECKDB('mydatabase')
но я получил только больше сообщений об ошибках.
Заранее спасибо!
Как сказал Сплаттне, 823 означает проблему с подсистемой ввода-вывода. Сообщение 823 - это то, что я называю «аппаратной ошибкой ввода-вывода». SQL Server запрашивает у ОС прочитать страницу, а она говорит «нет» - это означает, что подсистема ввода-вывода не может прочитать данную страницу.
Вывод CHECKDB означает, что ему не удалось создать моментальный снимок внутренней базы данных, который он использует для получения согласованного с транзакциями представления базы данных на определенный момент времени. Этому может быть несколько причин:
Если ни одно из этих условий не выполняется, вы можете создать собственный снимок базы данных и запустить на нем DBCC CHECKDB. Тот, который у вас есть, запустите следующее:
DBCC CHECKDB (yourdbname) WITH NO_INFOMSGS, ALL_ERRORMSGS
Если вы опубликуете результаты, я интерпретирую их для вас (я написал DBCC CHECKDB для SQL 2005)
Какими бы ни были результаты, вы смотрите на восстановление из резервной копии, извлечение данных в новую базу данных или запуск восстановления. Каждый из них предполагает разное время простоя и потери данных. Вам также нужно будет провести анализ первопричин, чтобы выяснить, что в первую очередь вызвало повреждение.
Кстати - у вас включены контрольные суммы страниц? Просматривали ли вы журнал ошибок SQL или журнал событий приложений Windows на предмет каких-либо признаков повреждения или каких-либо проблем с подсистемой ввода-вывода?
Надеюсь это поможет.
Ой! Неустранимая ошибка 823 означает, что произошла ошибка физического диска. В частности, страница, запрошенная SQL Server, не может быть прочитана. Это очень серьезная ошибка, указывающая на серьезную проблему с этой базой данных или с сервером в целом. Надеюсь, у вас есть резервная копия базы данных.
Я бы проверил журнал событий на этом сервере, в системе и в приложении. Посмотрите, есть ли ошибки, связанные с диском. Каковы подробности CHECKDB в БД?
DBCC CheckDB('< Database name >) WITH NO_INFOMSGS.
У меня такая же ошибка, но это произошло из-за привилегий. Как только я дал все права на диске, то есть Windows Drive, он работает без ошибок.