J'ai un environnement de développement qui approche rapidement du déploiement en production et j'ai remarqué dans les bûches qui environ toutes les 20 secondes que je vois le message:
Starting up database 'dbname'
CHECKDB for database 'dbname' finished without errors
J'ai remarqué cela parce que les utilisateurs finaux qui testent cela avaient un problème que je suis isolé à une erreur que j'ai remarquée dans le journal des événements Windows (journal d'application):
The log for database 'dbname' is not available. Check event log for related messages.
Incidemment, je n'ai trouvé aucun message associé mais résolu avec le cycle hors ligne/en ligne.
La seule chose à laquelle je puisse penser, c'est que cette application recueille des données toutes les 1 ms, mais toutes ces données ne sont pas insérées dans la base de données. En tant que serveur de devir, il a été configtenu afin que les journaux et les données soient sur le même lecteur. Avec ces deux informations à l'esprit, je m'appuyais dans cette question IO et que le serveur tente de récupérer une perte de connexion à son stockage (SAN). Pourtant, même cela n'a pas de sens pour moi car il ne perd pas tous les DBS, juste celui-ci. Que pourrait-on causer cela?
Plateforme: SQL Server 2008 R2 (ENT.) SUR Windows Server 2008 R2 (STD.)
La raison pour laquelle vous voyez cela:
Starting up database 'dbname'
CHECKDB for database 'dbname' finished without errors
Est parce que vous avez votre option de base de données définie pour AutoClose
.
Pour désactiver l'autoclose, faites ceci:
alter database YourDatabase
set auto_close off
go
Qu'est-ce que AutoClose
fait l'arrêt de la base de données après la déconnexion du dernier processus utilisateur. Puis la base de données automatiquement " rouvre " lorsque la prochaine connexion utilisateur tente de se connecter.
Typiquement, il est préférable de garder AutoClose
éteint, en raison de la latence évidente de faire tourner la base de données à nouveau. Je comprends de votre question selon laquelle il s'agit d'un environnement de développement, mais vous ne devriez pas en avoir besoin là-bas (et vous ne voulez certainement pas cela dans votre environnement de production).
En outre DBCC CHECKDB
ne fait pas "tirer toutes les 20 à 60 secondes" par le titre de la question, il apparaît juste comme ça!
Étant donné que SQL Server 2005 la valeur DBI_DBCCLASLASTKOOKOOD (si présent) est signalée dans le journal d'erreur chaque fois que la base de données est démarrée. Donc, vous venez de voir les mêmes informations historiques présentées à plusieurs reprises.
Cette rubrique est couverte dans l'article Pourquoi SQL Server exécute DBCC Checkdb contre mes bases de données au démarrage du serveur?