DBCC CHECKDB disparando a cada 20 - 60 segundos

13

Eu tenho um ambiente de desenvolvimento que está se aproximando rapidamente da implantação na produção e notei nos logs que aproximadamente a cada 20 segundos eu vejo a mensagem:

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

Percebi isso porque os usuários finais que estão testando isso tiveram um problema que eu isolei para um erro que notei no log de eventos do Windows (log de aplicativos):

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

Aliás, não encontrei mensagens relacionadas, mas resolvi com o ciclo offline / online.

A única coisa que consigo pensar é que esse aplicativo coleta dados a cada 1ms, mas todos esses dados não são inseridos no banco de dados. Sendo um servidor de desenvolvimento, ele foi configurado para que os logs e os dados estejam na mesma unidade. Com essas duas informações em mente, estou inclinado a tratar-se de um problema de E / S e que o servidor está tentando se recuperar de uma perda de conexão com seu armazenamento (SAN). No entanto, mesmo isso não faz sentido para mim, porque não está perdendo todos os dbs, apenas este. O que mais poderia estar causando isso?

Plataforma: SQL Server 2008 R2 (Ent.) No Windows Server 2008 R2 (Padrão)

swasheck
fonte

Respostas:

22

O motivo pelo qual você está vendo isso:

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

É porque você tem sua opção de banco de dados definida para AutoClose.

Para desativar o AutoClose, faça o seguinte:

alter database YourDatabase
set auto_close off
go

O que AutoClosefaz é desligar o banco de dados depois que o último processo do usuário é desconectado. E o banco de dados " reabre automaticamente" quando a próxima conexão do usuário tenta se conectar.

Normalmente, é uma boa prática manter-se AutoCloseDESLIGADO, devido à latência óbvia para ativar o banco de dados novamente. Entendo pela sua pergunta que este é um ambiente de desenvolvimento, mas você também não precisa dele (e definitivamente não o quer no seu ambiente de produção).

Além disso, DBCC CHECKDBna verdade, não está "disparando a cada 20 - 60 segundos" pelo título da pergunta, apenas aparece assim!

Desde o SQL Server 2005, o valor dbi_dbccLastKnownGood (se presente) é relatado no log de erros toda vez que o banco de dados é iniciado. Então você está vendo as mesmas informações históricas apresentadas repetidamente.

Este tópico é abordado no artigo Por que o SQL Server está executando o DBCC CHECKDB nos meus bancos de dados na Inicialização do Servidor?

Thomas Stringer
fonte