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). Тем не менее, даже это не имеет смысла для меня, потому что он не теряет все БД, только этот. Что еще может быть причиной этого?

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

swasheck
источник

Ответы:

22

Причина, по которой вы видите это:

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

Это потому, что у вас есть опция базы данных для AutoClose.

Чтобы отключить AutoClose, сделайте это:

alter database YourDatabase
set auto_close off
go

Что AutoCloseотключает базу данных после отключения последнего пользовательского процесса. И затем база данных автоматически « открывается », когда следующее подключение пользователя пытается подключиться.

Как правило AutoClose, из-за очевидной задержки можно снова отключить базу данных. Из вашего вопроса я понимаю, что это среда разработки, но она вам там и не нужна (и вам определенно не нужна эта среда).

Более того, на DBCC CHECKDBсамом деле это не «стрельба каждые 20 - 60 секунд» в названии вопроса, это просто так!

Начиная с SQL Server 2005, значение dbi_dbccLastKnownGood (если оно присутствует) заносится в журнал ошибок при каждом запуске базы данных. Таким образом, вы просто видите одну и ту же историческую информацию, представленную неоднократно.

Эта тема рассматривается в статье. Почему при запуске сервера SQL Server запускает DBCC CHECKDB для моих баз данных?

Томас Стрингер
источник