Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Principes de base de l'automatisation des tâches SQL Server

Ceci est un article d'introduction sur l'automatisation dans SQL Server principalement axé sur les concepts de base. Nous discuterons de certaines pratiques standard et de quelques exemples pour aider les débutants à démarrer avec l'automatisation de serveur SQL.

Cet article souligne également l'importance d'automatiser les tâches du serveur SQL pour économiser le temps et les efforts nécessaires pour effectuer ces tâches manuellement.

De plus, nous examinerons les cas dans lesquels ce n'est pas une bonne idée d'automatiser les tâches du serveur SQL malgré le fait que l'automatisation permet d'économiser du temps et des efforts.

À propos de l'automatisation de SQL Server

Familiarisons-nous d'abord avec le terme "automatisation" et en quoi consiste exactement l'automatisation des tâches du serveur SQL.

Qu'est-ce que l'automatisation ?

L'automatisation est un terme large qui couvre un large éventail de choses, mais cela signifie généralement des outils et des dispositifs de programmation qui permettent d'effectuer automatiquement un ensemble de tâches avec peu ou pas d'intervention humaine.

Qu'est-ce que l'automatisation SQL Server ?

L'automatisation de SQL Server peut également avoir plusieurs significations, mais elle concerne le plus souvent l'automatisation des tâches administratives de SQL Server afin d'économiser du temps et des efforts.

Les administrateurs de base de données ou les équipes d'infrastructure responsables de la gestion de SQL Server et des bases de données hébergées passent souvent beaucoup de temps à effectuer des tâches de maintenance de base de données qui peuvent être automatisées par différentes méthodes et planifiées pour s'exécuter à des intervalles spécifiés.

Dans cet article, nous nous concentrons principalement sur l'automatisation des tâches d'administration de SQL Server.

Quand devez-vous automatiser les tâches SQL

L'automatisation d'une tâche d'administration SQL Server nécessite une planification minutieuse avant sa mise en œuvre. Toute tâche administrative SQL telle que la sauvegarde, la maintenance de la base de données ou la surveillance de la base de données doit idéalement être automatisée si elle sert l'objectif sans causer d'autre problème.

Quand vous ne devriez pas automatiser les tâches SQL

Bien que l'automatisation soit très utile dans la plupart des cas, il existe encore certaines tâches qu'il vaut mieux effectuer manuellement.

Par exemple, si une tâche d'administration de base de données prend 5 minutes et que l'automatisation de cette tâche nécessite 15 heures d'écriture et de test de scripts d'automatisation, il est alors plus efficace d'effectuer cette tâche manuellement.bacsql

Certaines tâches ne doivent pas être automatisées. Par exemple, vérifier les modifications apportées à la base de données avant de la déployer sur un serveur actif fait souvent partie du travail d'un administrateur de base de données. Ceci est fait pour s'assurer que les modifications sont compatibles avec la base de données cible. L'automatisation de cette tâche comporte plus de risques que d'avantages, il vaut donc mieux la laisser telle quelle.

D'une manière générale, si une tâche de base de données nécessite une intervention manuelle (c'est-à-dire qu'elle doit être vue ou gérée par une personne/équipe afin de passer à l'étape/étape suivante) conformément aux règles et réglementations de votre entreprise, alors l'automatisation complète de cette tâche est impossible à moins qu'il ne soit approuvé par la direction de votre entreprise.

Exemples d'automatisation SQL

Examinons maintenant quelques exemples d'automatisation SQL.

Scénario de sauvegarde de base de données (perspective DBA)

Les administrateurs de base de données (DBA) s'occupent des bases de données d'entreprise et leurs tâches quotidiennes incluent le traitement des requêtes liées à la base de données et la gestion du serveur de base de données.

Un administrateur de base de données passe la majeure partie de son temps à gérer et à déployer de petites modifications dans les bases de données et à s'occuper du serveur de base de données.

Un DBA doit effectuer les tâches cohérentes suivantes :

  1. Créer une sauvegarde quotidienne de la base de données à la fin de chaque journée de travail
  2. Créer une sauvegarde hebdomadaire à la fin de chaque semaine
  3. Créez une sauvegarde mensuelle à la fin de chaque mois.

Une sauvegarde quotidienne prend une demi-heure et c'est la dernière chose qu'un DBA fait lorsqu'il part pour la journée. Bien qu'ils puissent effectuer plusieurs tâches une fois le processus de sauvegarde quotidien lancé, ils doivent toujours garder un œil sur la façon dont il va s'assurer que la sauvegarde est terminée. En effet, la sauvegarde doit être stockée sur le disque de sauvegarde lorsqu'elle est prête.

Même si nous ignorons le temps passé sur les sauvegardes hebdomadaires et mensuelles, le temps nécessaire pour effectuer la sauvegarde quotidienne augmentera plus vous effectuerez ce processus car la base de données contiendra de plus en plus de données. Même s'il faut une demi-heure pour effectuer une sauvegarde quotidienne au début, ce temps peut passer à environ une heure en quelques semaines ou mois en fonction de la croissance des données dans le système de base de données.

Il s'agit d'une tâche immuable qui doit être constamment répétée, il est donc possible qu'un DBA s'ennuie ou perde sa concentration et fasse des erreurs ou manque un jour ou deux.

Si un administrateur de base de données automatise cette tâche SQL, il n'économisera pas seulement du temps et des efforts. Les chances de faire une erreur seront minimisées.

Le processus de sauvegarde quotidienne peut être programmé pour démarrer pendant la nuit lorsque l'interaction avec la base de données est faible. Le lendemain, le DBA peut vérifier la sauvegarde et utiliser la dernière heure de la journée de travail (qui était auparavant utilisée pour le processus de sauvegarde) pour des tâches plus importantes et urgentes.

Scénario de développement et de déploiement de base de données

Considérons un exemple très courant de développement et de déploiement de bases de données (j'exclus délibérément les tests afin de rester dans le cadre de cet article). Un développeur de base de données utilise un outil de développement de base de données tel que SQL Server Data Tools (SSDT) ​​pour ajouter de nouvelles tables à une base de données. Une fois cela fait, ils enregistrent les modifications dans le projet de base de données SQL. Ces modifications sont ensuite envoyées au DBA ou à l'équipe d'infrastructure qui doit examiner ces modifications et les déployer sur le serveur en direct.

Les points importants sont les suivants :

  1. Les développeurs de bases de données ne doivent pas publier leurs modifications de base de données directement sur le serveur en direct conformément aux pratiques standard
  2. Les administrateurs de base de données ou l'équipe chargée de l'infrastructure qui gère le serveur en direct ne peuvent pas publier de modifications sur la base de données en direct avant d'avoir examiné ces modifications pour s'assurer qu'elles ne remettent pas en cause la cohérence de la base de données.

Comme vous pouvez le comprendre d'après ce dont nous avons discuté, l'automatisation complète des tâches de développement et de déploiement de la base de données n'est pas pratique et pose de nombreux risques de sécurité.

La meilleure décision serait donc d'automatiser les étapes qui dépendent d'un DBA ou d'une équipe d'infrastructure.

Tâches de maintenance de l'index de la base de données

Les index de base de données jouent un rôle essentiel dans la récupération plus rapide du jeu de résultats (lignes) à partir de la ou des bases de données. Ces index nécessitent cependant une maintenance dans le temps. La maintenance de l'index de la base de données peut être effectuée manuellement pendant les heures creuses ou automatisée. Cela peut être une tâche très chronophage, il est donc préférable d'automatiser cette tâche, surtout lorsqu'il y a tant d'autres éléments liés au serveur de base de données à gérer.

Cependant, certains experts partagent ce point de vue et recommandent de limiter dans une certaine mesure la maintenance des index afin de garder un œil sur le processus, voire de le faire entièrement manuellement.

En ce qui concerne la maintenance des index, les éléments suivants peuvent améliorer les performances des index de base de données :

  1. Reconstruire l'index
  2. Réorganiser l'index
  3. Indice de défragmentation
  4. Mettre à jour les statistiques

Comment automatiser les tâches SQL

Examinons maintenant les exigences de base pour automatiser une tâche SQL, suivies d'un exemple très simple.

Configurer une base de données exemple

Cette procédure pas à pas nécessite l'exemple de base de données à table unique suivant appelé UniversityV6 à configurer comme suit :

-- (1) Create the UniversityV6 sample database
CREATE DATABASE UniversityV6;
GO

USE UniversityV6

CREATE TABLE [dbo].[Student] (
    [StudentId] INT           IDENTITY (1, 1) NOT NULL,
    [Name]      VARCHAR (30)  NULL,
    [Course]    VARCHAR (30)  NULL,
    [Marks]     INT           NULL,
    [ExamDate]  DATETIME2 (7) NULL,
    CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED ([StudentId] ASC)
);
GO

Exécutez le script pour créer l'exemple de base de données :

Démarrage de l'Agent SQL Server

L'automatisation d'une tâche SQL dépend généralement d'un agent SQL Server, sauf si vous décidez de choisir un autre itinéraire.

La première chose dont vous avez besoin est de vous assurer qu'un agent SQL Server est en cours d'exécution. S'il ne fonctionne pas, vous devez le démarrer manuellement et le maintenir en marche.

Connectez-vous à une instance SQL Server et recherchez le nœud SQL Server Agent dans l'Explorateur d'objets. Si une icône "stop" rouge s'affiche sur ce nœud, il n'a pas encore démarré :

Faites un clic droit sur le Agent SQL Server nœud et cliquez sur Démarrer :

Ensuite, vous devez confirmer que vous souhaitez démarrer un service d'agent SQL Server sur votre serveur. Cliquez sur Oui pour faire ceci :

Une fois démarré, l'Agent SQL Server aura une petite icône verte affichée à côté. Vous pouvez également développer le nœud maintenant :

Créer une nouvelle tâche

Faites un clic droit sur les Emplois dossier et cliquez sur Nouvelle tâche… :

Tapez "Sauvegarder la tâche automatisée UniversityV6 ” et cliquez sur Étapes dans la barre de navigation de gauche :

Ajouter une nouvelle étape de tâche

Ensuite, cliquez sur Nouveau , tapez "Backup UniversityV6" comme nom d'étape, ajoutez le script SQL suivant, puis cliquez sur OK :

-- Backup the UniversityV6 sample database using the date time stamp
DECLARE @BackupName VARCHAR(100)
SET @BackupName=CONCAT('C:\Backup\UniversityV6-',FORMAT(GETDATE(),'yyyy-MM-dd-hh-mm-tt'),'.bak')
BACKUP DATABASE UniversityV6 TO [email protected] WITH COMPRESSION, INIT;
GO

Cliquez sur OK pour terminer la configuration de la tâche.

Afficher le travail créé

Faites défiler jusqu'à l'Agent SQL Server et localisez la tâche nouvellement créée :

Testez le travail (tâche automatisée)

Cliquez avec le bouton droit sur Sauvegarder la tâche automatisée UniversityV6 et cliquez sur Commencer le travail à l'étape… :

La tâche commencera et se terminera :

Vérifier l'emplacement de sauvegarde

Maintenant, allez à l'emplacement où cette tâche automatisée a créé une nouvelle sauvegarde :

Toutes nos félicitations! Vous avez automatisé avec succès la tâche de création d'une sauvegarde de base de données. Vous pouvez maintenant le stocker sur n'importe quel lecteur de sauvegarde en changeant simplement le nom de la lettre du lecteur.

N'oubliez pas que vous devez toujours enregistrer une sauvegarde sur un lecteur de sauvegarde autre que le lecteur système C:. Vous pouvez programmer cette tâche pour qu'elle s'exécute à intervalles fréquents en cliquant avec le bouton droit sur la tâche, en cliquant sur P propriétés , puis en cliquant sur Planifications :

Choses à faire

Maintenant que vous pouvez automatiser les tâches de sauvegarde de base de données de base, essayez ce qui suit pour améliorer vos compétences :

  1. Planifiez cette tâche pour qu'elle s'exécute tous les jours de l'après-midi pendant une semaine à titre de test
  2. Créer un nouveau tableau appelé Statistiques dans la base de données exemple avec les colonnes suivantes :
    1. StatID (INT)
    2. StatDate (DATETIME2)
    3. Nombre total de lignes (INT)

Maintenant, testez-vous en créant une tâche automatisée (nouvelle tâche) de journalisation du nombre de lignes pour l'Étudiant tableau avec la date/l'heure dans les Statistiques table. Essayez de remplir fréquemment la table Student.

Planifiez la tâche pour qu'elle s'exécute toutes les heures et vérifiez si les Statistiques table reflète vos insertions de données en vous montrant le nombre de lignes de la table toutes les heures.