DBCC CHECKDB si attiva ogni 20 - 60 secondi


13

Ho un ambiente di sviluppo che si sta avvicinando rapidamente alla distribuzione in produzione e ho notato nei registri che ogni 20 secondi circa vedo il messaggio:

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

Ho notato questo perché gli utenti finali che lo stanno testando hanno avuto un problema che ho isolato per un errore che ho notato nel registro eventi di Windows (Registro applicazioni):

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

Per inciso, non ho trovato messaggi correlati ma risolto con il ciclo offline / online.

L'unica cosa che mi viene in mente è che questa applicazione raccoglie dati ogni 1 ms, ma tutti questi dati non vengono inseriti nel database. Essendo un server di sviluppo, è stato configurato in modo che registri e dati si trovino sulla stessa unità. Con queste due informazioni in mente, mi sto proponendo che si tratti di un problema di I / O e che il server stia tentando di recuperare da una perdita di connessione alla sua memoria (SAN). Eppure anche questo non ha senso per me perché non sta perdendo tutti i dbs, solo questo. Cos'altro potrebbe causare questo?

Piattaforma: SQL Server 2008 R2 (Ent.) Su Windows Server 2008 R2 (Std.)

Risposte:


22

Il motivo per cui stai vedendo questo:

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

È perché hai impostato l'opzione del database AutoClose.

Per disattivare la chiusura automatica, procedere come segue:

alter database YourDatabase
set auto_close off
go

Ciò che AutoClosefa è arrestare il database dopo la disconnessione dell'ultimo processo utente. Quindi il database si " riapre " automaticamente quando la successiva connessione dell'utente tenta di connettersi.

In genere, è consigliabile mantenere AutoCloseOFF, a causa dell'evidente latenza di far girare nuovamente il database. Capisco dalla tua domanda che questo è un ambiente di sviluppo, ma non dovresti averne bisogno nemmeno lì (e sicuramente non lo vuoi nel tuo ambiente di produzione).

Inoltre, in DBCC CHECKDBrealtà non "spara ogni 20 - 60 secondi" per il titolo della domanda, sembra solo così!

Da SQL Server 2005 il valore dbi_dbccLastKnownGood (se presente) viene riportato nel registro degli errori ogni volta che viene avviato il database. Quindi stai vedendo le stesse informazioni storiche presentate ripetutamente.

Questo argomento è trattato nell'articolo Perché SQL Server esegue DBCC CHECKDB nei miei database all'avvio del server?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.