Je travaille sur la mise en œuvre de Paul Randal's méthode d'épandage manuellement DBCC CheckDB sur plusieurs jours Pour de très grandes bases de données, qui consiste essentiellement à:
Quelqu'un a-t-il utilisé cette technique? Des scripts existants là-bas?
Je crains que cela ne couvre peut-être pas tout ce que CheckDB fait; la documentation en ligne de livres pour CheckDB indique qu'en plus de Checkalloc, CheckCatalog and CheckTable, c'est aussi:
Donc, voici mes questions:
Ces contrôles supplémentaires sont-ils nécessaires/importants? (Les vues indexées sont probablement un peu plus discutées pour moi, je ne pense pas que nous utilisions le courtier de service ou le filtream encore.)
Si oui, existe-t-il des moyens d'exécuter ces contrôles supplémentaires séparément?
Checkalloc et CheckCatalog semblent courir très rapidement, même sur de grands dbs. Toute raison de ne pas courir tous les jours?
(Remarque: Ceci sera une routine standard pour des milliers de bases de données existantes sur des centaines de serveurs, ou au moins chaque base de données sur une certaine taille. Cela signifie que des options telles que la restructuration de toutes les bases de données à utiliser CheckFileGroup ne sont pas vraiment pratiques pour nous.)
DBCC CheckDB est Vital pour les bases de données SQL Server pour être sûr de 100% qu'il n'y a pas de corruption. Toutefois, en raison des bases de données de taille massive, c'est très difficile à trouver une fenêtre de maintenance lorsque vous prétendez être 24x7. Au fil des ans, l'équipe SQL Server a mis en place divers mécanismes qui détecteront les formes de corruption les plus courantes, notamment liées à la corruption physique causée par le matériel.
SQL Server 2005 et UP a page_verify = checksum qui peut vous aider à détecter de manière proactive la corruption physique dans les pages de base de données, ajoutant ainsi une somme de contrôle à chaque page, car il est écrit sur le système d'E/S et valide la somme de contrôle est lu sur le disque.
De plus, Sauvegarde (complet ou différentiel) avec checksum garantira de détecter toute corruption d'E/S provoquée par le matériel.
Par conséquent, du côté matériel de la corruption, SQL Server fait un bon travail de la détection et de la signaler. (Assurez-vous de définir Alertes liées à la corruption importantes aussi).
Qui étant dit, toujours corruption logique, erreurs de gribouilleur induit - Lorsque des pages en mémoire sont corrompues soit par le code tiers en cours d'exécution à l'intérieur. Le processus SQL Server ou par des pilotes ou un autre logiciel avec des privilèges suffisants en mode Windows Kernel et/ou bugs SQL Server, etc. sont indétectables en utilisant des méthodes ci-dessus et donc [~ # ~ ~] checkdb [~ # ~] entre dans l'image.
DBCC CheckDB effectue une vérification plus complète qui inclut des en-têtes de page de vérification pour une corruption éventuelle qui ne sont détectables par aucun autre moyen.
Des scripts existants là-bas?
Au lieu de réinventer la roue, je vous recommande vivement de jeter un coup d'œil sur Solution de vérification de l'intégrité SQL Server de OLA
Exécution efficace DBCC CheckDB:
Vous devez simplement être créatif lorsque vous êtes serré dans la fenêtre de maintenance ayant d'énormes bases de données ou un nombre élevé de bases de données pour exécuter CheckDB sur.
Après avoir assisté à la formation SQLSKILLS, ce que j'ai mis en œuvre dans mon environnement est:
DBCC CHECKTABLE
avec la course DBCC CHECKALLOC
et DBCC CHECKCATALOG
DBCC CHECKTABLE
, DBCC CHECKALLOC
et DBCC CHECKCATALOG
. Pour que vous puissiez avoir une idée de la durée de vie généralement prendre pour vos chèques à courir.NOINDEX
car elle accélérera l'opération car elle ne vérifie pas les index non clusters sur les tables d'utilisateur. Cela a un avantage car ce n'est pas si critique que la corruption de données car aucune donnée n'est perdue et que vous pouvez abandonner et recréer l'index si nécessaire.Évidemment, l'édition Enterprise peut tirer parti de l'exécution parallèle des instructions DBCC, mais recherchez le paramètre MaxDop car cela pourrait finir par prendre tout votre CPU. Cela peut être difficile limité par le gouverneur des ressources.
Remarque: Si vous avez une colonne clairsemée, votre checkdb sera mort lent comme décrit ICI .
Enfin, sa façon de prévenir la corruption de la base de données en utilisant tous les outils d'outils disponibles + votre foi dans votre système de matériel de serveur de base de données et, surtout, la valeur de vos données.
Quelques excellentes références: