DBCC CHECKDB стріляє кожні 20 - 60 секунд


13

У мене є середовище розробників, яке швидко наближається до розгортання у виробництві і помічало в журналах, що приблизно кожні 20 секунд я бачу повідомлення:

Starting up database 'dbname'
CHECKDB for database 'dbname' finished without errors

Я помітив це, оскільки у кінцевих користувачів, які тестують це, виникла проблема, яку я виділив до помилки, яку я помітив у Журналі подій Windows (Журнал прикладних програм):

The log for database 'dbname' is not available. Check event log for related messages.

Між іншим, я не знайшов жодних пов’язаних повідомлень, але вирішено за допомогою циклу в режимі офлайн / онлайн.

Єдине, про що я можу придумати, це те, що ця програма збирає дані кожні 1 мс, але всі ці дані не вставляються в базу даних. Будучи сервером розробників, він був налаштований так, що журнали та дані знаходяться на одному диску. Маючи на увазі ці два відомості, я схиляюся до того, що це проблема вводу-виводу, і що сервер намагається відновити втрату з'єднання зі своїм сховищем (SAN). Але навіть для мене це не має сенсу, оскільки він не втрачає всіх dbs, тільки цього. Що ще може спричинити це?

Платформа: SQL Server 2008 R2 (Ent.) На Windows Server 2008 R2 (Std.)

Відповіді:


22

Причина, по якій ви бачите це:

Starting up database 'dbname'
CHECKDB for database 'dbname' finished without errors

Це тому, що для вас встановлено параметр бази даних AutoClose.

Щоб вимкнути автоматичне закривання, виконайте це:

alter database YourDatabase
set auto_close off
go

Що AutoCloseробити - це вимкнення бази даних після відключення останнього користувача. А потім база даних автоматично « відновлюється » при спробі підключення наступного користувача.

Як правило, найкраще зберігати AutoCloseВИМКНЕНО, оскільки очевидна затримка знову розповсюджувати базу даних. З вашого запитання я розумію, що це середовище розробки, але воно вам там теж не потрібно (і ви точно не хочете цього у виробничому середовищі).

Крім того DBCC CHECKDB, насправді це не "стрілянина кожні 20 - 60 секунд" за назвою питання, це просто так виглядає!

Починаючи з SQL Server 2005, значення dbi_dbccLastKknownGood (за наявності) повідомляється в журналі помилок кожного разу при запуску бази даних. Тож ви просто бачите ту саму історичну інформацію, яку неодноразово представляли.

Ця тема висвітлюється у статті Чому SQL Server запускає DBCC CHECKDB проти моїх баз даних при запуску сервера?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.