Page d'accueil » comment » Script batch pour simplifier la maintenance de la base de données SQL Server

    Script batch pour simplifier la maintenance de la base de données SQL Server

    Outre la création de sauvegardes, SQL Server met à votre disposition diverses tâches et fonctions susceptibles d'améliorer à la fois les performances et la fiabilité de vos bases de données. Nous vous avons déjà montré comment sauvegarder des bases de données SQL Server avec un simple script de ligne de commande. Ainsi, nous fournissons de la même manière un script qui vous permettra d'effectuer facilement des tâches de maintenance courantes..

    Compacter / Réduire une base de données [/ Compact]

    Plusieurs facteurs contribuent à l'espace disque physique utilisé par une base de données SQL Server. Juste pour en nommer quelques-uns:

    • Au fil du temps, à mesure que les enregistrements sont ajoutés, supprimés et mis à jour, SQL augmente et réduit constamment le nombre de tables, tout en générant des structures de données temporaires permettant d'effectuer des manipulations de requête. Afin de répondre aux besoins de stockage sur disque, SQL Server augmentera la taille de la base de données (généralement de 10%) en fonction des besoins, de sorte que la taille du fichier de base de données ne change pas constamment. Bien que cela soit idéal pour les performances, cela peut entraîner une déconnexion de l’espace de stockage utilisé, car si, par exemple, vous ajoutez un très grand nombre d’enregistrements entraînant la croissance de la base de données, puis supprimez ces enregistrements, SQL Server ne le récupérera pas automatiquement. espace disque.
    • Si vous utilisez le mode de récupération complète sur vos bases de données, le fichier journal transactionnel (LDF) peut devenir assez volumineux, en particulier pour les bases de données avec un volume élevé de mises à jour..

    En compactant (ou en réduisant) la base de données, vous récupérerez de l'espace disque inutilisé. Pour les petites bases de données (200 Mo ou moins), cela ne sera généralement pas beaucoup, mais pour les grandes bases de données (1 Go ou plus), l'espace récupéré peut être important..

    Réindexer une base de données [/ Reindex]

    Tout comme la création, la modification et la suppression constantes de fichiers peuvent conduire à une fragmentation du disque, l'insertion, la mise à jour et la suppression d'enregistrements dans une base de données peuvent conduire à une fragmentation des tables. Les résultats pratiques sont les mêmes en ce sens que les opérations de lecture et d’écriture sont affectées par les performances. Bien que l'analogie ne soit pas parfaite, la réindexation des tables dans une base de données les défragmente essentiellement. Dans certains cas, cela peut considérablement augmenter la vitesse de récupération des données.

    En raison du fonctionnement de SQL Server, les tables doivent être réindexées individuellement. Pour les bases de données contenant un grand nombre de tables, cela peut être très difficile à faire manuellement, mais notre script parcourt chaque table de la base de données respective et reconstruit tous les index..

    Vérification de l'intégrité [/ Verify]

    Pour qu'une base de données reste fonctionnelle et produise des résultats précis, de nombreux éléments d'intégrité doivent être en place. Heureusement, les problèmes d’intégrité physique et / ou logique ne sont pas très fréquents, mais il est recommandé d’exécuter occasionnellement le processus de vérification de l’intégrité sur vos bases de données et d’en examiner les résultats..

    Lorsque le processus de vérification est exécuté dans notre script, seules les erreurs sont signalées. Aucune nouvelle n'est donc une bonne nouvelle..

    Utiliser le script

    Le script de traitement par lots SQLMaint est compatible avec SQL 2005 et versions ultérieures et doit être exécuté sur une machine sur laquelle l'outil SQLCMD est installé (installé dans le cadre de l'installation de SQL Server). Il est recommandé de déposer ce script dans un emplacement défini dans votre variable PATH Windows (c.-à-d. C: Windows) afin de pouvoir l'appeler facilement, comme toute autre application, à partir de la ligne de commande..

    Pour afficher les informations d'aide, entrez simplement:

    SQLMaint /?

    Exemples

    Pour exécuter un compact puis une vérification sur la base de données “MyDB” en utilisant une connexion sécurisée:

    SQLMaint MyDB / Compact / Verify

    Pour exécuter une réindexation puis compacter «MyDB» sur l'instance nommée «Special» à l'aide de l'utilisateur «sa» avec le mot de passe «123456»:

    SQLMaint MyDB /S:.Special / U: sa / P: 123456 / Réindexer / Compact

    Utilisation de l'intérieur d'un script de lot

    Bien que le script de traitement par lots SQLMaint puisse être utilisé comme une application depuis la ligne de commande, il doit être précédé du mot-clé CALL lorsque vous l'utilisez dans un autre script de traitement par lots..

    Par exemple, ce script exécute toutes les tâches de maintenance sur chaque base de données non système sur une installation SQL Server par défaut à l'aide d'une authentification sécurisée:

    @ÉCHO OFF
    SETLOCAL EnableExtensions
    SET DBList = "% TEMP% DBList.txt"
    SqlCmd -E -h-1 -w 300 -Q “SET NoCount ON; SELECT Nom FROM master.dbo.sysDatabases WHERE Nom Not IN ('maître', 'modèle', 'msdb', 'tempdb') ">% DBList%
    FOR / F «jetons d'utilisation = = 1» %% i IN (% DBList%) DO (
    APPELER SQLMaint "%% i" / Compact / Reindex / Verify
    ÉCHO +++++++++++
    )
    SI EXIST% DBList% DEL / F / Q% DBList%
    ENDLOCAL

    Téléchargez le script batch SQLMaint à partir de SysadminGeek.com