Назад | Перейти на главную страницу

SQL 2008 выполняет CHECKDB каждые 10 минут, есть идеи, почему и где я могу узнать?

У меня есть полная ночная резервная копия, которая выполняется, а также 2-часовой журнал транзакций. Полная резервная копия также сжимается и проверяет целостность базы данных при запуске.

Похоже, что никаких дополнительных заданий не запускается, за исключением задания syspolicy_purge_history, которое, как мне кажется, автоматически создается SQL.

Спасибо

Немногое.

1) Отключите АВТОУСАДКУ. Это зло и может стать источником долгосрочных проблем с производительностью, поскольку может привести к фрагментации на уровне файлов.

2) Как упоминалось выше, похоже, что АВТО ЗАКРЫТИЕ включено. Вам необходимо отключить его, так как это еще один фактор, который ухудшает производительность. Зачем? Каждый раз, когда закрывается последнее соединение, SQL Server пытается выключить себя, что приводит к очистке процедуры и кеша данных. Это те, которые поддерживают хорошую производительность за счет уменьшения необходимости извлекать данные с диска, что очень дорого по сравнению с чтением из памяти. А создание планов выполнения - это процесс с интенсивным использованием ЦП, и ваш sql-сервер должен сгенерировать планы после возврата из автоматического закрытия. Теперь, если вы знаете, что он делает, выключите АВТО ЗАКРЫТЬ.

3) SQL Server на самом деле НЕ выполняет DBCC CHECKDB, а отображает сообщение после чтения загрузочного файла, в котором хранится дата последнего чистого запуска DBCC CHECKDB. Это просто запись в файл журнала, а не запуск здесь CHECKDB. Похоже, что вы запускали CHECKDB более двух месяцев, и рекомендуется запускать CHECKDB через регулярные промежутки времени, насколько это возможно.

http://technet.microsoft.com/en-us/magazinebeta/2009.10.sqlqa.aspx

Я бы проверил, включен ли Auto_Close в ваших базах данных. Когда он включен, ваша база данных отключится и освободит ресурсы после того, как последний пользователь выйдет из соединения. Когда новый пользователь начинает использовать базу данных, она открывается снова. Если ваши базы данных запускают checkdb каждый раз, когда открывается база данных, это может быть вашей проблемой.

Следующий запрос проверит Auto_Close во всех базах данных:

ВЫБРАТЬ * ИЗ sys.databases
ГДЕ is_auto_close_on = 1

У меня была похожая ситуация со странным запуском DBCC CHECKDB, когда у меня ничего не было запланировано. Некоторые незначительные раскопки привели меня к одному из наших инженеров по серверам, которому было поручено сделать резервную копию баз данных (это были базы данных Sharepoint) с помощью Symantec. Незадолго до его резервного копирования инструмент Symantec был настроен для запуска DBCC CHECKDB. В этом случае Symantec оставалась на связи, поэтому Activity Monitor помог мне в этом разобраться.

Спасибо за этот пост. Я только что исправил 3 базы данных, отключив автоматическое закрытие и автоматическое сжатие, чтобы избавиться от сообщений «Запуск базы данных ...» и «CHECKDB» каждые 5 минут.

And possible errors caused by them
27/08/2010 10:09:01     SQL Server has encountered 3 occurrence(s) of cachestore flush for the 'SQL Plans' cachestore (part of plan cache) due to some database maintenance or reconfigure operations. 
27/08/2010 10:09:01     SQL Server has encountered 3 occurrence(s) of cachestore flush for the 'Bound Trees' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.       
27/08/2010 10:09:00     SQL Server has encountered 3 occurrence(s) of cachestore flush for the 'Object Plans' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.