Restaurer des bases SQL Server
Ce que fait la fonction
L'assistant de restauration SQL Server remet une ou plusieurs bases d'un point de restauration sur une instance SQL Server. L'agent de la machine cible lit le point de restauration, puis il demande la restauration à SQL Server.
Vous avez deux manières de restaurer :
- Sous un nouveau nom : l'assistant crée une nouvelle base. Les bases actuelles ne changent pas. C'est le choix par défaut.
- En remplaçant une base : le point de restauration prend la place d'une base de l'instance. Cette action est définitive. Seul le rôle Administrateur du MSP peut la demander.
La cible est l'instance de la machine d'origine, ou l'instance d'une autre machine Windows du même client.
Une restauration ne rend jamais une table ni une ligne. Elle rend une base entière.
Prérequis
- Un point de restauration SQL Server de la machine source. Voir Sauvegarder SQL Server.
- Le rôle Technicien ou Administrateur pour lancer une restauration. Voir Rôles et droits.
- Le rôle Administrateur du MSP pour écraser une base. Le rôle Administrateur plateforme ne peut pas écraser une base.
- La machine cible en ligne, avec un agent Windows 0.8.0-rc.1 ou plus récent. Voir Versions d'agent minimales par fonction.
- Une instance cible prise en charge, dont la dernière connexion est OK et dont le compte a le
rôle SQL Server
sysadmin. Voir Déclarer la connexion d'une instance. - Une version de SQL Server sur l'instance cible au moins aussi récente que celle de la sauvegarde.
- Assez de place libre sur le volume de données de l'instance cible.
Ouvrir l'assistant
Deux chemins mènent au même assistant.
Depuis l'onglet SQL Server
- Ouvrez le portail.
- Ouvrez Endpoints, puis la machine Windows.
- Ouvrez l'onglet SQL Server.
- Cliquez Restaurer des bases, en haut de la carte SQL Server.
Depuis un point de restauration
- Ouvrez l'onglet SQL Server de la machine.
- Dans le tableau Points de restauration SQL Server, cliquez Restaurer sur la ligne du point voulu.
L'assistant ouvre alors ce point de restauration.
Le bouton Restaurer des bases n'apparaît pas pour le rôle Lecture seule, quand l'agent n'a trouvé aucune instance, ou quand une suppression de la machine est en attente.
Quand la machine n'a aucun point de restauration SQL Server, le portail écrit « Aucun point de restauration SQL Server sur cette machine. », avec un bouton qui revient à l'onglet SQL Server.
Les trois étapes de l'assistant
| Étape | Nom | Ce que vous faites |
|---|---|---|
| 1 | Bases | Choisir le point de restauration et les bases. |
| 2 | Destination | Choisir la machine, l'instance, et la manière de restaurer. |
| 3 | Vérifier et lancer | Relire le résumé, puis lancer la restauration. |
Les boutons Suivant et Retour passent d'une étape à l'autre. L'assistant garde vos choix quand vous revenez en arrière.
Restaurer sous un nouveau nom
C'est la voie la plus sûre : rien n'est écrasé.
- Ouvrez l'assistant.
- Choisissez le Point de restauration. Chaque ligne donne sa date et son nombre de bases.
- Cochez les Bases à restaurer. Avec plusieurs bases, Tout sélectionner les coche toutes.
- Cliquez Suivant.
- Laissez la Machine sur <nom> (cette machine).
- Choisissez l'Instance. La liste donne son nom et sa version de SQL Server.
- Pour le rôle Administrateur du MSP, laissez Comment restaurer sur Restaurer sous un nouveau nom. Les autres rôles n'ont pas ce choix.
- Lisez le champ Nouveau nom de <base> de chaque base. L'assistant propose un nom. Corrigez-le au besoin.
- Cliquez Suivant.
- Relisez le résumé : le point de restauration, la destination, la manière, et chaque base avec son nouveau nom.
- Cliquez Lancer la restauration.
Le portail ouvre la page de la restauration. Suivez-y son avancement.
Le nom proposé
L'assistant propose <base>_restore_<AAAAMMJJ_hhmm>. L'heure est celle du point de restauration,
dans le fuseau horaire de votre navigateur.
La règle du champ est : « De 1 à 100 caractères : lettres, chiffres, _, -, . et espaces. Pas
d'espace ni de . au début ou à la fin. Les fichiers vont dans les dossiers par défaut de
l'instance. »
Un nom réservé de Windows, comme CON, NUL, COM1 ou LPT1, est refusé. Un nom de base système
est refusé.
| Message | Ce qu'il faut faire |
|---|---|
| « Ce nom n'est pas valide. Lisez la règle sous le champ. » | Corrigez les caractères du nom. |
| « Une base de ce nom existe sur l'instance. » | Tapez un autre nom. |
| « Chaque nouveau nom doit être différent. » | Donnez un nom différent à chaque base. |
Vous ne choisissez pas les dossiers des fichiers de la base. Pour une restauration sous un nouveau nom, l'agent écrit dans les dossiers par défaut de l'instance cible.
Les bases que l'assistant ne restaure pas
Une base non restaurable reste dans la liste, grisée, avec sa raison.
| Raison | Ce qu'elle veut dire |
|---|---|
| Base système : pas restaurée par le portail | master, model, msdb ou tempdb. Son fichier de sauvegarde reste dans le point de restauration : une restauration de fichiers le rend. Voir Restaurer des fichiers depuis le portail. |
| Absente de ce point de restauration | La sauvegarde de cette base a échoué, ou la base a été ignorée. |
Restaurer sur une autre machine du même client
Utilisez cette voie pour monter une copie de la base sur un serveur de test, ou pour remonter la base après la perte de la machine d'origine.
- Ouvrez l'assistant depuis la machine source.
- Choisissez le point de restauration et les bases, puis cliquez Suivant.
- Ouvrez la liste Machine, puis choisissez la machine cible.
- Choisissez l'Instance de la machine cible.
- Continuez comme pour une restauration sous un nouveau nom.
La liste Machine donne cette machine, puis les autres machines Windows du même client.
Quand aucune instance de la machine choisie ne peut recevoir la restauration, le portail écrit « Aucune instance de cette machine ne peut recevoir une restauration. L'instance doit être prise en charge, et sa dernière connexion doit être OK. » Déclarez la connexion de l'instance, relisez les instances, puis revenez.
Quand la version de SQL Server de l'instance cible est plus ancienne que celle de la sauvegarde, le portail écrit « Cette instance a SQL Server <version cible>. La sauvegarde de <base> vient de SQL Server <version source> : une restauration demande la même version ou une version plus récente. » Choisissez une autre instance.
Une restauration SQL Server reste toujours dans le même client. Le portail ne propose pas les machines d'un autre client.
Le journal d'audit de cette restauration reste sur la machine source, celle qui porte le point de restauration. Cherchez la demande et le résultat sur la machine source, pas sur la machine cible.
Écraser une base
Cette action est définitive. La base cible perd ses données actuelles.
Le bloc Comment restaurer n'apparaît que pour le rôle Administrateur du MSP. Pour un autre rôle, l'assistant reste sur Restaurer sous un nouveau nom, et l'API refuse une demande d'écrasement.
- Ouvrez l'assistant, choisissez le point de restauration et les bases, puis cliquez Suivant.
- Choisissez la Machine et l'Instance.
- Dans Comment restaurer, choisissez Remplacer une base.
- Lisez l'avertissement : « Les bases que vous remplacez perdent leurs données actuelles. Les utilisateurs de ces bases sont déconnectés. Vous ne pouvez pas annuler cette action. »
- Pour chaque base, choisissez la Base à remplacer par <base>.
- Dans Pour confirmer, tapez <nom>, tapez le nom exact de la base à remplacer.
- Cochez Sauvegarder chaque base avant de la remplacer, sauf si vous avez déjà une sauvegarde récente. Voir La sauvegarde de sécurité.
- Cliquez Suivant.
- Relisez le résumé. Il donne la ligne Sauvegarde avant le remplacement : Oui ou Non.
- Cliquez Remplacer N bases. Avec une seule base, le bouton écrit Remplacer 1 base.
La liste Base à remplacer par <base> donne seulement les bases de l'instance cible qui sont en ligne, qui ne sont pas des bases système, et que BaaStide sait sauvegarder.
En mode remplacement, l'agent garde les fichiers actuels de la base qu'il écrase. Il n'écrit pas dans les dossiers par défaut de l'instance.
| Message | Ce qu'il faut faire |
|---|---|
| « Choisissez la base à remplacer. » | Choisissez une base dans la liste. |
| « Chaque base ne peut être remplacée qu'une fois. » | Choisissez une base différente pour chaque source. |
| « Tapez exactement le nom de la base. » | Recopiez le nom, les majuscules comprises. |
La relecture de l'instance avant le lancement
À l'étape Vérifier et lancer, le portail relit l'instance cible. Il compare l'identité de chaque base à remplacer avec celle qu'il connaît.
Le bouton Remplacer N bases reste grisé jusqu'à la fin de cette relecture.
Quand une base a changé, ou quand elle a disparu, le portail écrit « La base à écraser a changé sur l'instance. Lisez de nouveau l'inventaire, puis confirmez de nouveau. » Revenez à l'étape Destination, puis choisissez de nouveau la base.
La sauvegarde de sécurité
La case Sauvegarder chaque base avant de la remplacer est décochée par défaut. BaaStide ne la force jamais.
Quand vous la cochez, l'agent sauvegarde d'abord chaque base à remplacer, en sauvegarde complète. Cette sauvegarde devient un point de restauration de la machine cible. Le tableau Points de restauration SQL Server l'écrit sous le nom Sauvegarde de sécurité avant un remplacement.
Si cette sauvegarde échoue, rien n'est remplacé.
Quand la case est cochée et qu'une tâche tourne déjà sur le dépôt de la machine cible, l'API refuse le lancement. Le portail écrit « Une tâche est déjà active sur cette machine. » Attendez la fin de cette tâche, puis relancez.
Un point de sécurité suit la rétention de la politique SQL Server de son instance. Quand l'instance n'a aucune politique SQL Server, BaaStide garde ses trois points de sécurité les plus récents.
Vérifier les bases après la restauration
L'étape Vérifier et lancer porte la case Vérifier les bases après la restauration (DBCC CHECKDB). Elle est décochée par défaut.
Quand vous la cochez, l'agent exécute DBCC CHECKDB sur chaque base restaurée, après sa
restauration. La vérification prend plus de temps sur les grandes bases.
La page de la restauration n'écrit pas le résultat de la vérification. Lisez-le par l'API, dans le
champ stats.mssql_items de la route
Get restore session.
Suivre la restauration
Le portail ouvre la page de la restauration dès le lancement.
La page écrit le bloc Restauration SQL Server, puis « Le détail de chaque base n'est pas encore disponible sur cette page. Le journal d'audit de la machine le contient. » Ce journal est celui de la machine source, même quand la restauration va vers une autre machine.
L'état, l'avancement et le bouton d'arrêt sont les mêmes que pour une restauration de fichiers. Voir Suivre et arrêter une restauration.
Pour le résultat de chaque base, vous avez deux voies :
- Le journal d'audit de la machine source, sous l'action Restauration SQL Server terminée. Il donne, par base : le nom de la source, le nom de la cible, le statut, le code d'erreur, l'état final de la base cible et le point de restauration de la sauvegarde de sécurité. Voir Journal d'audit.
- La route d'API Get restore session. Son champ
stats.mssql_itemsdonne une ligne par base. Il porte aussi le résultat deDBCC CHECKDBet la liste des utilisateurs de la base qui n'ont pas de login sur l'instance cible, que le journal d'audit ne garde pas.
BaaStide écrit l'action Restauration SQL Server terminée quand l'agent envoie son résultat. Une restauration qui se ferme sans résultat de l'agent n'a pas cette entrée. C'est le cas d'un ordre que l'agent refuse, d'un arrêt sans résultat, d'un délai dépassé, ou d'un redémarrage de l'agent. L'état de la restauration reste alors sur sa page.
Messages de refus
| Message | Cause | Ce qu'il faut faire |
|---|---|---|
| « La version SQL Server de l'instance cible est plus ancienne que celle de la sauvegarde. Choisissez une autre instance. » | La version de l'instance cible est trop ancienne. | Choisissez une instance plus récente, ou mettez l'instance à jour. |
| « Le volume cible n'a pas assez de place libre pour les fichiers de la base. » | La place libre du volume de données est sous la taille des bases à créer. | Libérez de la place sur la machine cible. |
| « Une base de ce nom existe déjà sur l'instance cible. Tapez un autre nom. » | Le nom choisi est pris. | Tapez un autre nom. |
| « La base à écraser a changé sur l'instance. Lisez de nouveau l'inventaire, puis confirmez de nouveau. » | La base cible n'a plus la même identité. | Relisez les instances, puis choisissez de nouveau la base. |
| « Le mot de passe SQL Server ne peut pas être enregistré ni lu sur le serveur. Tapez-le de nouveau, ou contactez l'administrateur de la plateforme. » | La plateforme ne peut pas lire le mot de passe de l'instance. | Saisissez de nouveau la connexion de l'instance. |
| « L'agent n'a pas pu exécuter la demande SQL Server. Lisez le journal de l'agent, puis réessayez. » | Une lecture en direct de l'agent a échoué : les bases d'un point de restauration, ou la relecture de l'instance avant un remplacement. | Lisez le journal de l'agent, puis relancez la lecture. |
| « Certains champs ne sont pas valides. » | L'agent a refusé une lecture en direct, ou la demande a un champ non valide. | Relisez l'inventaire de l'instance, puis refaites le choix des bases. |
| « Une restauration est déjà en cours sur la machine cible. » | La machine cible a déjà une restauration ouverte depuis le portail. | Attendez sa fin, ou arrêtez-la. |
Limites et précautions
- Une restauration de base SQL Server reste dans le même client. Elle ne va jamais vers une machine d'un autre client.
- La cible est toujours une machine Windows avec un agent 0.8.0-rc.1 ou plus récent.
- Le portail ne restaure pas une base système. Son fichier de sauvegarde reste disponible par une restauration de fichiers.
- Un écrasement est définitif. Il n'y a pas d'annulation. Cochez la sauvegarde de sécurité quand vous n'avez pas déjà une sauvegarde récente de la base cible.
- Un écrasement ne passe que par le portail, avec le rôle Administrateur du MSP. Une clé API et un assistant IA ne l'obtiennent jamais.
- Un assistant IA restaure seulement sous un nouveau nom. Il affiche d'abord un aperçu, puis il demande votre confirmation. L'aperçu vaut 10 minutes, pour ce choix exact.
- Vous ne choisissez pas l'emplacement des fichiers de la base. Sous un nouveau nom, l'agent écrit dans les dossiers par défaut de l'instance cible. En mode remplacement, il garde les fichiers actuels de la base qu'il écrase.
- Une restauration rend une base entière. Elle ne rend ni une table, ni une ligne, ni un fichier d'une base.
- Une restauration porte au plus 100 bases.
- Une machine n'exécute qu'une restauration du portail à la fois.
- Une base restaurée peut porter des utilisateurs sans login sur l'instance cible. BaaStide les signale, il ne les corrige pas. Recréez les logins sur l'instance cible.
- Quand un écrasement échoue, la base cible peut rester à l'état
RESTORING. L'état final de chaque base est dans le journal d'audit de la machine source. - Une base en échec n'arrête pas les suivantes. Lisez le résultat de chaque base.
- Les sauvegardes d'un essai terminé ne sont pas restaurables. Le portail écrit « Ces sauvegardes viennent d'un essai terminé. Importez une licence payante pour les restaurer. Aucune donnée n'a été supprimée. »
- Un même utilisateur lance dix restaurations par minute au plus. Au-delà, le portail demande d'attendre.
- Le journal d'audit de la machine source garde chaque demande de restauration SQL Server. Il garde aussi la fin de la restauration, quand l'agent envoie son résultat.
Référence
- API : Create mssql restore, route
POST /endpoints/{id}/mssql/restores. - API : Preview mssql restore, route
POST /endpoints/{id}/mssql/restores/preview. - API : Get restore session, pour le résultat par base.
- Outils MCP :
preview_mssql_restoreetstart_mssql_restore. - Codes de cause d'une tâche.