Как проверить базу данных на наличие ошибок?

  • 8,6K Просмотров
  • Последнее сообщение 28 октября 2019
berivan написал 28 октября 2019

День добрый.

В общем-то вопрос в названии темы. В РМК как-то странно начали считаться деньги в кассе. Сформировал в Журнале событий ошибки, там были предупреждения, о необходимости проверить базу данных.

Сортировка: Стандарт | Новые | Голоса
Danil написал 28 октября 2019

Здравствуйте!

Подозреваете, что база физически имеет ошибки? У вас вроде MSSQL он достаточно надежен в этом плане, хотя и на старуху бывает проруха. Давайте сначала попробуем понять, что у вас пошло не так.

В РМК как-то странно начали считаться деньги в кассе.

Можно подробнее? Что смущает?

Сформировал в Журнале событий ошибки, там были предупреждения, о необходимости проверить базу данных.

Текст события скиньте пожалуйста.

berivan написал 28 октября 2019

 

Можно подробнее? Что смущает?

Отработали день, а z-отчет прошел с 0 суммой, нет информации ни о продажах, ни о деньгах - все по 0. На следующий день, деньги в кассе совсем не сходились с тем, что должно быть. 

Текст события скиньте пожалуйста.

SQL Server обнаружил логическую ошибку ввода-вывода, связанную с согласованностью: неправильная контрольная сумма (ожидаемая: 0xd4ced154; фактическая: 0xee2564a6). Она произошла при прочитать страницы (1:2152) в базе данных с идентификатором 4 по смещению 0x000000010d0000 файла "D:\SanSan\DATA\MSSQL12.SQLEXPRESS\MSSQL\DATA\MSDBData.mdf". Дополнительные сведения см. в журнале ошибок SQL Server и журнале системных событий. Это серьезная ошибка, которая угрожает целостности базы данных и должна быть немедленно исправлена. Выполните полную проверку базы данных на согласованность (DBCC CHECKDB). Эта ошибка может быть вызвана многими причинами; дополнительные сведения см. в электронной документации по SQL Server.

Невозможно вставить запись журнала, подробную запись резервного копирования или восстановления в базу данных msdb. Это может указывать на неполадки с базой данных msdb. Операция резервного копирования или восстановления завершилась успешно.

Обработано 1608 страниц для базы данных "SanSan_log", файл "SanSan3_log" для файла 1.

Обработано 2 страниц для базы данных "SanSan_log", файл "SanSan3_log_log" для файла 1.

BACKUP DATABASE успешно обработал 1610 страниц за 0.826 секунд (15.225 MБ/сек).

 

Выполнение данной инструкции было прервано.

 

Mihail написал 28 октября 2019

Здравствуйте. Судя по сообщению "неполадки с базой данных msdb", проблема у вас с системной базой данных самого SQL сервера. Проверить MS SQL базу можно выполнив запрос DBCC CHECKDB('имя_базы') через приложение SQL Server Management Studio, где в имя_базы подставить msdb. Этот запрос только диагностический, он не исправляет обнаруженные ошибки. Обычно в конце результата запроса выводится количество найденных ошибок. Для восстановления можно попробовать запрос DBCC CHECKDB('имя_базы', REPAIR_ALLOW_DATA_LOSS), но предварительно сохраните все ваши рабочие базы, т.к. из-за поломки системной базы возможно придется переустанавливать MS SQL Server. После исправления нужно еще раз будет запустить диагностический запрос и проверить, что количество ошибок стало ноль.

berivan написал 28 октября 2019

CHECKDB обнаружил 0 ошибок размещения и 9 ошибок согласованности в базе данных "msdb".

repair_allow_data_loss - это минимальный уровень исправления для ошибок, найденных DBCC CHECKDB (msdb).

Выполнение DBCC завершено. Если DBCC выдает сообщения об ошибках, обратитесь к системному администратору.

 

Вот такое выдало при проверке. 

 Вбиваю эту команду - DBCC CHECKDB(msdb, REPAIR_ALLOW_DATA_LOSS)

И получаю такой ответ:

Сообщение 7919, уровень 16, состояние 3, строка 1

Инструкция восстановления не обработана. База данных должна находиться в однопользовательском режиме.

 

Как перевести в однопользовательский режим?

Danil написал 28 октября 2019

ALTER DATABASE [имя базы] SET SINGLE_USER WITH ROLLBACK IMMEDIATE

потом 

ALTER DATABASE [имя базы] SET MULTI_USER WITH ROLLBACK IMMEDIATE

что бы вернуть в многопользовательский режим, соответственно все программы кроме SQL Server Management Studio должны быть закрыты

кроме того, я бы проверил ваш диск на наличие ошибок, если у вас не было внезапного отключения света (или чего-то подобного) то такая история обычно предвестник того что винт выходит из строя

berivan написал 28 октября 2019

Проблемы со светом были. Винт проверяли, ничего критичного (BAD нет). Наша база проходит проверку без ошибок. А вот системная msdb - выдает ошибки...

Danil написал 28 октября 2019

Как вариант, делаете бэкап вашей базы, удаляете MSSQL. Ставите его заново. Системная база будет новая и целая. Потом восстанавливаете вашу базу.

berivan написал 28 октября 2019

Все прошло хорошо. Перевел в однопользовательский режим, исправил ошибки, проверил - ошибок нет. Перевел обратно в многопользовательский. Посмотрим, как будет работать дальше. Спасибо за помощь!

Close