Aller au contenu principal

Sauvegarder SQL Server

Ce que fait une politique SQL Server​

Une politique SQL Server sauvegarde les bases d'une instance SQL Server d'une machine Windows. L'agent demande la sauvegarde à SQL Server, puis il chiffre le flux et il l'envoie dans le dépôt de la machine.

Chaque base part en sauvegarde complète en copie seule (COPY_ONLY). Vos propres sauvegardes des bases ne changent pas. Une sauvegarde en copie seule ne vide pas le journal des transactions.

Chaque sauvegarde réussie donne un point de restauration. Ce point sert à restaurer une base sous un nouveau nom, sur la même machine ou sur une autre machine du même client. Voir Restaurer des bases SQL Server.

Une politique SQL Server ne remplace pas une politique de fichiers. Les deux vivent ensemble sur la même machine. Voir Quel type de sauvegarde choisir.

Prérequis​

  • Une machine Windows avec un agent enrôlé. Voir Installer l'agent sur Windows.
  • Un agent 0.8.0-rc.1 ou plus récent. Un agent plus ancien ne sauvegarde pas SQL Server. Voir Versions d'agent minimales par fonction.
  • Une instance SQL Server 2016 ou plus récente sur cette machine.
  • Le rôle Technicien ou Administrateur. Le rôle Lecture seule lit les instances et les points de restauration sans rien changer. Voir Rôles et droits.
  • Une licence de la plateforme qui permet les sauvegardes.
  • Un compte de connexion à l'instance avec le rôle SQL Server sysadmin. Voir Déclarer la connexion d'une instance.
  • Pour lire les instances et pour tester une connexion : un agent en ligne.
  • Pour lire les bases d'un point de restauration que la plateforme ne connaît pas encore : un agent en ligne, à une version 0.8.0-rc.1 ou plus récente.

L'onglet SQL Server d'une machine​

L'onglet SQL Server n'existe que sur une machine Windows.

  1. Ouvrez le portail.
  2. Ouvrez Endpoints, puis la machine.
  3. Ouvrez l'onglet SQL Server.

L'onglet donne une carte par instance, puis le tableau Points de restauration SQL Server.

Quand l'agent n'a trouvé aucune instance, le portail écrit « Aucune instance SQL Server trouvée », puis « L'agent cherche les instances SQL Server à chaque connexion. Installez SQL Server sur cette machine, ou relisez les instances. »

Quand l'agent est trop ancien, le portail écrit « L'agent de cette machine ne sauvegarde pas encore SQL Server. Mettez l'agent à jour pour utiliser les sauvegardes SQL Server. »

La carte d'une instance​

ÉlémentCe qu'il donne
TitreInstance par défaut (MSSQLSERVER), ou Instance <nom> pour une instance nommée.
Étiquette d'étatL'état du service Windows de l'instance : Démarrée, Arrêtée, Démarrage, Arrêt en cours, En pause ou État inconnu.
Sous-titreLa version et l'édition de SQL Server.
ConnexionLe compte que l'agent utilise, la date du dernier enregistrement du mot de passe, et l'adresse e-mail de la personne qui l'a enregistré.
Bases de donnéesUn tableau, une ligne par base.
Bases luesLa date de la dernière lecture des bases, ou Jamais lues.

Le tableau des bases a cinq colonnes : Base, Mode de récupération, Taille, Dernière sauvegarde et Remarques. La colonne Taille donne le total, puis le détail « Données … · Journal … ». La colonne Dernière sauvegarde donne le dernier point de restauration de BaaStide qui contient cette base.

Les instances que BaaStide ne sauvegarde pas​

Le portail écrit un avertissement sur la carte, et la politique SQL Server n'accepte pas ces instances.

CasMessage du portail
Instance 32 bits« Cette instance est une instance 32 bits. BaaStide ne la sauvegarde pas. »
Instance d'un cluster de basculement« Cette instance fait partie d'un cluster de basculement. BaaStide ne la sauvegarde pas. »
Version antérieure à SQL Server 2016« Cette version de SQL Server est antérieure à 2016. BaaStide ne la sauvegarde pas. »

Les bases que BaaStide ignore​

Une base ignorée ne part jamais dans une sauvegarde. Le portail écrit la raison dans la colonne Remarques.

RemarqueCe qu'elle veut dire
Pas en ligne : ignoréeLa base n'est pas à l'état ONLINE au moment de la sauvegarde.
Chiffrée (TDE) : ignoréeLa base utilise le chiffrement transparent des données.
Groupe de disponibilité : ignoréeLa base appartient à un groupe de disponibilité.
Snapshot de base de données : ignoréeLa base est un instantané de base de données.
Jamais sauvegardéeLa base tempdb. BaaStide ne la sauvegarde jamais.

Deux autres remarques ne bloquent rien :

  • Mode complet : la base est en mode de récupération complet ou journalisé en bloc. Une sauvegarde complète ne vide jamais son journal des transactions.
  • Journal qui grossit : le journal de la base attend une sauvegarde du journal, et il est rempli à plus de 80 %, ou il dépasse deux fois la taille des données. Le portail écrit alors « Le journal de la base <nom> grossit. Passez la base en mode SIMPLE, ou gardez vos sauvegardes du journal. »

Lire les instances d'une machine​

L'agent cherche les instances à chaque connexion. Relisez-les à la main quand vous venez d'installer une instance, ou quand vous venez de changer une base.

  1. Ouvrez l'onglet SQL Server de la machine.
  2. Cliquez Relire les instances.
  3. Lisez le message : « Instances lues : N instances trouvées. »

Le portail remplace alors les bases connues de chaque instance par celles qu'il vient de lire.

Le bouton est grisé quand la machine est hors ligne. Le portail écrit alors « La machine doit être en ligne pour lire ses instances. »

Une instance dont la connexion échoue n'est pas mise à jour. Lisez le message de sa carte, corrigez la connexion, puis relisez les instances.

Déclarer la connexion d'une instance​

L'agent utilise cette connexion pour les sauvegardes, les restaurations et la lecture des bases de l'instance. Le compte doit avoir le rôle SQL Server sysadmin.

  1. Ouvrez l'onglet SQL Server de la machine.
  2. Sur la carte de l'instance, cliquez Modifier la connexion.
  3. Choisissez un mode dans Se connecter avec :
    • Le compte du service de l'agent : aucun mot de passe. L'agent se connecte avec le compte Windows de son service, par exemple NT SERVICE\BaaStide.
    • Un login SQL Server : saisissez le Login SQL Server et le Mot de passe.
    • Un compte Windows : saisissez le Compte (DOMAINE\utilisateur) et le Mot de passe.
  4. Cliquez Tester.
  5. Lisez le résultat du test. Voir Lire le résultat d'un test.
  6. Cliquez Enregistrer la connexion.

Le portail écrit « Connexion de <instance> enregistrée. »

Le mot de passe ne s'affiche jamais. Tapez-le à chaque enregistrement et à chaque test. BaaStide le garde chiffré. Le portail et l'API ne le rendent jamais. La carte de l'instance donne seulement la date de son dernier enregistrement et l'adresse e-mail de la personne qui l'a fait.

Le bouton Tester se connecte avec les valeurs du formulaire. Il n'enregistre rien.

Lire le résultat d'un test​

RésultatCe qu'il faut faire
« Connexion OK. Le compte a le rôle sysadmin. N bases trouvées. »Enregistrez la connexion.
« Connexion OK, mais le compte n'a pas le rôle sysadmin. Les sauvegardes vont échouer. »Donnez le rôle sysadmin au compte, ou choisissez un autre compte.
« SQL Server a refusé la connexion. Vérifiez le compte et le mot de passe. »Corrigez le compte ou le mot de passe.
« L'agent n'a pas pu se connecter à l'instance. Vérifiez qu'elle est démarrée et accepte TCP/IP ou les canaux nommés. »Démarrez l'instance, ou activez TCP/IP ou les canaux nommés dans le Gestionnaire de configuration SQL Server.

Donner le rôle sysadmin au compte du service​

Quand le compte de connexion n'a pas le rôle sysadmin, le portail écrit sur la carte « L'agent n'a pas les droits pour sauvegarder cette instance ».

Pour le compte du service de l'agent, le portail donne la commande à exécuter.

  1. Ouvrez l'onglet SQL Server de la machine.
  2. Sous l'avertissement, copiez la commande du champ Commande pour SQL Server.
  3. Demandez à un administrateur de l'instance d'exécuter cette commande sur l'instance.
  4. Revenez sur l'onglet, puis cliquez Relire les instances.

La commande crée le login du compte du service, puis elle l'ajoute au rôle sysadmin :

CREATE LOGIN [NT SERVICE\BaaStide] FROM WINDOWS;
ALTER SERVER ROLE [sysadmin] ADD MEMBER [NT SERVICE\BaaStide];

Copiez toujours la commande du portail. Le nom du compte suit le nom du service de l'agent, et ce nom change avec une marque blanche. Voir Marque blanche de l'agent.

Pour un login SQL Server ou un compte Windows, le portail écrit « Le compte <nom> n'a pas le rôle sysadmin. Donnez-lui ce rôle, ou utilisez un autre compte, puis relisez les instances. »

Créer une politique SQL Server​

  1. Ouvrez le portail.
  2. Ouvrez Endpoints, puis la machine Windows.
  3. Ouvrez l'onglet Politiques.
  4. Cliquez Créer une politique. Sur une machine sans aucune politique, le bouton écrit Créer la politique.
  5. Saisissez un Nom, par exemple SQL Server.
  6. Choisissez le type SQL Server.
  7. Choisissez l'Instance. La liste donne les instances que l'agent peut sauvegarder.
  8. Choisissez les Bases :
    • Toutes les bases utilisateur : les bases en ligne au moment de la sauvegarde. Une nouvelle base part sans modifier la politique.
    • Seulement ces bases : cochez les bases, une par une.
  9. Réglez les plannings, la rétention et la limite d'envoi, ou laissez leurs valeurs. Voir Planification et rétention et Limiter le débit d'envoi.
  10. Cliquez Créer la politique.

Le type SQL Server est grisé sur une machine Linux. Le portail écrit « Les sauvegardes SQL Server sont pour les machines Windows seulement. »

Quand l'agent n'a trouvé aucune instance, le formulaire écrit « L'agent n'a trouvé aucune instance SQL Server sur cette machine. » Quand l'instance choisie n'a aucune base connue, le formulaire écrit « Aucune base lue sur cette instance pour l'instant. Relisez les instances dans l'onglet SQL Server de la machine. »

Le type d'une politique ne change plus après sa création. Pour une autre instance, créez une deuxième politique.

Une politique SQL Server porte aussi des scripts avant et après la sauvegarde. Voir Scripts avant et après une sauvegarde.

Choisir toutes les bases utilisateur​

Ce choix ouvre deux champs de plus.

  • Bases à ne pas sauvegarder : cochez les bases à laisser de côté. Ce champ est facultatif.
  • Sauvegarder aussi les bases système (master, model, msdb) : cochez cette case pour ajouter les trois bases système.

Le résumé de la politique écrit alors « Toutes les bases utilisateur », ou « Toutes les bases utilisateur, sauf <noms> », et « avec les bases système » quand la case est cochée.

Le portail ne restaure pas une base système. Son fichier de sauvegarde reste dans le point de restauration, et une restauration de fichiers le rend. Voir Restaurer des fichiers depuis le portail.

Choisir une liste de bases​

Ce choix sauvegarde seulement les bases cochées.

Une base de la liste qui n'est plus sur l'instance au moment de la sauvegarde donne une sauvegarde partielle, avec le code mssql_db_missing. Retirez cette base de la politique.

Le formulaire garde un nom qui n'est plus dans les bases lues, avec la mention Absente de l'instance. Décochez-le pour le retirer.

La case Sauvegarder aussi les bases système n'existe pas avec ce choix. tempdb n'est jamais acceptée.

L'information sur le mode de récupération​

Quand une base choisie est en mode de récupération complet ou journalisé en bloc, le formulaire écrit : « Une sauvegarde complète ne vide jamais le journal des transactions. Ces bases sont en mode de récupération complet : leur journal grossit si vous ne gardez pas vos sauvegardes du journal, ou si vous ne les passez pas en mode SIMPLE », puis la liste des bases.

Ce message est une information. Il ne bloque pas l'enregistrement.

Modifier le choix des bases​

Un changement qui ajoute de la protection s'applique tout de suite : une base de plus, une exclusion retirée, la case des bases système cochée.

Un changement qui retire de la protection attend 72 heures. C'est le cas de :

  • une base retirée de la liste ;
  • une base ajoutée aux Bases à ne pas sauvegarder ;
  • la case Sauvegarder aussi les bases système décochée ;
  • le passage de Toutes les bases utilisateur à Seulement ces bases ;
  • un changement d'instance.

Jusque-là, la politique garde son choix actuel. Le formulaire de la politique écrit alors « Ces valeurs tiennent compte d'un changement en attente du <date>. »

Un enregistrement peut ajouter et retirer de la protection d'un seul coup. BaaStide traite alors tout cet enregistrement comme un retrait : il attend 72 heures. Une seule exception : avec Seulement ces bases avant et après, sur la même instance, les bases que vous venez d'ajouter à la liste partent tout de suite. Avec Toutes les bases utilisateur, avant ou après, ou avec un changement d'instance, rien du nouveau choix ne part avant la date.

Pour qu'un ajout parte tout de suite, enregistrez d'abord l'ajout seul. Faites le retrait dans un deuxième enregistrement.

Le changement attend dans la page Actions différées, sous le nom Retrait de bases SQL Server. Vous pouvez l'annuler jusqu'à sa date. Voir Annuler une action différée.

Lancer une sauvegarde SQL Server hors planning​

  1. Ouvrez Endpoints, puis la machine.
  2. Ouvrez l'onglet Politiques.
  3. Cliquez Sauvegarder maintenant sur la ligne de la politique SQL Server.

Le bouton Sauvegarder maintenant de la fiche de la machine ne lance qu'une sauvegarde de fichiers. Pour SQL Server, passez toujours par la ligne de la politique. Voir Sauvegarder maintenant.

Lire l'état d'une sauvegarde SQL Server​

Une tâche de sauvegarde SQL Server prend l'un de ces états :

ÉtatCe qu'il veut dire
RéussieToutes les bases choisies sont dans le point de restauration. Les bases ignorées ne comptent pas.
PartielleUne partie des bases est dans le point de restauration. Les autres ont échoué.
ÉchouéeAucun point de restauration. La tâche donne sa cause.
AnnuléeUn utilisateur a arrêté la tâche. Aucun point de restauration.

Les causes propres à SQL Server sont dans Codes de cause d'une tâche.

Voir aussi Suivre une tâche de sauvegarde.

Lire les points de restauration SQL Server​

Le tableau Points de restauration SQL Server est en bas de l'onglet SQL Server.

ColonneCe qu'elle donne
DateLa date du point de restauration.
PolitiqueLe nom de la politique, Sans politique, ou Sauvegarde de sécurité avant un remplacement.
StatutRéussie ou Partielle.
BasesLe nombre de bases sauvegardées.
TailleLa somme des tailles des sauvegardes.
Ajouté au dépôtLes octets que ce point a ajoutés au dépôt.

Pour lire les bases d'un point de restauration, cliquez Bases sur sa ligne. La fenêtre donne, par base : la taille de la sauvegarde, la taille après restauration, le mode de récupération, la version de SQL Server et le statut (Sauvegardée, En échec ou Ignorée).

Quand la plateforme ne connaît pas encore les bases de ce point, elle les demande à l'agent, puis elle les garde. L'agent doit alors être en ligne et assez récent. Sinon, le portail écrit « L'agent est hors ligne. Démarrez-le, puis réessayez. » ou « La version de l'agent est trop ancienne pour cette action. Mettez l'agent à jour. »

Pour lancer une restauration depuis ce point, cliquez Restaurer sur sa ligne.

Voir Trouver le bon point de restauration.

Limites et précautions​

  • BaaStide fait des sauvegardes complètes seulement. Il ne fait ni sauvegarde différentielle, ni sauvegarde du journal des transactions. Gardez votre propre plan de sauvegarde du journal quand vous avez besoin d'un point de reprise plus fin.
  • Une sauvegarde complète en copie seule ne vide jamais le journal des transactions d'une base en mode de récupération complet. Passez la base en mode SIMPLE, ou gardez vos sauvegardes du journal.
  • Une politique de fichiers ne protège pas une base SQL Server. Une copie des fichiers de données prise pendant que la base tourne ne peut pas être restaurée. Quand un chemin d'une politique de fichiers contient un dossier \Microsoft SQL Server\, ou un fichier .mdf, .ndf ou .ldf, le portail écrit un avertissement sur l'onglet SQL Server et dans le formulaire de la politique de fichiers. Retirez ces chemins.
  • Les sauvegardes SQL Server sont pour les machines Windows seulement.
  • L'agent sauvegarde les bases l'une après l'autre, dans une seule tâche. Une base en échec n'arrête pas les suivantes : la tâche finit Partielle.
  • Une machine exécute une seule tâche à la fois. Une sauvegarde SQL Server attend la fin de la tâche en cours.
  • Sans le rôle sysadmin, les sauvegardes échouent avec le code mssql_rights_missing.
  • Quand la plateforme ne peut pas lire le mot de passe enregistré d'une instance, aucun ordre ne part. La tâche finit avec la cause mssql_credential_unavailable. Saisissez de nouveau la connexion de l'instance.
  • Une politique porte une seule instance. Une machine avec plusieurs instances porte une politique par instance.
  • Une politique accepte au plus 1 000 bases dans sa liste, et autant dans ses exclusions. Une machine déclare au plus 50 instances.
  • Le tableau des points de restauration SQL Server donne au plus les 500 points les plus récents.
  • Par l'API, le rôle Lecture seule et une clé API sans la portée browse ne reçoivent pas les dossiers par défaut d'une instance : ce sont des données du client. Un assistant IA ne reçoit ni le login d'une instance, ni la date du dernier enregistrement de son mot de passe, ni l'adresse e-mail de la personne qui l'a enregistré. Il reçoit seulement le mode de connexion.
  • Le journal d'audit garde chaque changement de connexion d'une instance, sous l'action Connexion SQL Server modifiée. Il ne garde jamais le mot de passe. Voir Journal d'audit.

Référence​