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

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

День добрый.

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

 

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

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

 

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

Отработали день, а 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Б/сек).

 

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

 

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

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

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

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

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

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

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

Close