Убийство DBCC CheckDB при сбое хранения
Контроллеры в одном из SAN моего кластера периодически перезагружаются. Очевидно, это можно исправить с помощью обновления прошивки, но пока мы не сможем применить обновление через несколько дней, мне придется смириться с этой проблемой. Проблема заключается в том, что если один из них завершается неудачно во время работы DBCC CHECKDB (во время ночного обслуживания), CHECKDB зависает. Кажется, я не могу его убить... это показывает, что он ожидает ASYNC_IO_COMPLETION вечно. Нужно ли циклически запускать экземпляр или есть другой способ убить CHECKDB?
SQL Server 2005 RTM и SP2.
2 ответа
Хорошо, это правильное поведение. Происходит то, что вы убили DBCC CHECKDB, пока он все еще создает необходимый снимок базы данных. Частью создания моментального снимка является восстановление после сбоя проверяемой базы данных, но в контексте моментального снимка базы данных. Восстановление после сбоя не может быть остановлено, а запущенный spid не может быть уничтожен. Таким образом, ваши единственные варианты - дождаться его завершения или выполнить цикл экземпляра, что приведет к удалению снимка. Когда я изменил CHECKDB, чтобы использовать снимки базы данных, мы знали, что это будет потенциальной проблемой, но альтернативы не было.
Прочтите этот пост в блоге, где я объясню немного больше: происходит ли откат транзакций при запуске DBCC CHECKDB?
ура
Когда вы говорите, что не можете его убить, вы пытаетесь отменить работу? Или вы убиваете SPID из монитора активности?