Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique explique comment restaurer des pages dans SQL Server à l’aide de SQL Server Management Studio ou de Transact-SQL. L’objectif d’une restauration de page est de restaurer une ou plusieurs pages endommagées sans restaurer l’ensemble de la base de données. En règle générale, les pages qui sont candidates à la restauration ont été marquées comme « suspectes » en raison d’une erreur rencontrée lors de l’accès à la page. Les pages suspectes sont identifiées dans la table suspect_pages dans la base de données msdb .
Dans cette rubrique
Avant de commencer :
Pour restaurer des pages, utilisez :
Avant de commencer
Quand une restauration de page est-elle utile ?
Une restauration de page est destinée à réparer les pages endommagées isolées. La restauration et la récupération de quelques pages individuelles peuvent être plus rapides qu’une restauration de fichiers, ce qui réduit la quantité de données hors connexion pendant une opération de restauration. Toutefois, si vous devez restaurer plus de quelques pages dans un fichier, il est généralement plus efficace de restaurer l’ensemble du fichier. Par exemple, si un grand nombre de pages sur un appareil indiquent une défaillance d’appareil en attente, envisagez de restaurer le fichier, éventuellement à un autre emplacement et de réparer l’appareil.
En outre, toutes les erreurs de page ne nécessitent pas de restauration. Un problème peut se produire dans les données mises en cache, telles qu’un index secondaire, qui peut être résolu en recalculant les données. Par exemple, si l’administrateur de base de données supprime un index secondaire et le régénère, les données endommagées, bien que corrigées, ne sont pas indiquées comme telles dans la table suspect_pages .
Limitations et restrictions
La restauration de pages s’applique aux bases de données SQL Server qui utilisent les modèles de récupération complètes ou journalisées en bloc. La restauration de pages est prise en charge uniquement pour les groupes de fichiers en lecture/écriture.
Seules les pages de base de données peuvent être restaurées. Impossible d’utiliser la restauration de page pour restaurer les éléments suivants :
Journal des transactions
Pages d’allocation : pages Global Allocation Map (GAM), pages Shared Global Allocation Map (SGAM) et pages Page Free Space (PFS).
Page 0 de tous les fichiers de données (page de démarrage de fichier)
Page 1:9 (page de démarrage de la base de données)
Catalogue de texte intégral
Pour une base de données qui utilise le modèle de récupération journalisé en bloc, la restauration de page présente les conditions supplémentaires suivantes :
La sauvegarde pendant que les données de groupe de fichiers ou de page sont hors connexion est problématique pour les données journalisées en bloc, car les données hors connexion ne sont pas enregistrées dans le journal. Toute page hors connexion peut empêcher la sauvegarde du journal. Dans ce cas, envisagez d’utiliser DBCC REPAIR, car cela peut entraîner moins de perte de données que la restauration vers la sauvegarde la plus récente.
Si une sauvegarde de journal d’une base de données journalisée en bloc rencontre une page incorrecte, elle échoue, sauf si WITH CONTINUE_AFTER_ERROR est spécifié.
La restauration de pages ne fonctionne généralement pas avec la récupération avec journalisation en bloc.
Une bonne pratique pour effectuer la restauration de page consiste à définir la base de données sur le modèle de récupération complète et à essayer une sauvegarde de journal. Si la sauvegarde du journal fonctionne, vous pouvez poursuivre la restauration de la page. Si la sauvegarde du journal échoue, vous risquez de perdre du travail depuis la sauvegarde du journal précédent, ou vous devez exécuter DBCC avec l’option REPAIR_ALLOW_DATA_LOSS.
Recommandations
Scénarios de restauration de page :
Restauration de page hors connexion
Toutes les éditions de SQL Server prennent en charge la restauration des pages lorsque la base de données est hors connexion. Dans une restauration de page hors connexion, la base de données est hors connexion tandis que les pages endommagées sont restaurées. À la fin de la séquence de restauration, la base de données est en ligne.Restauration de page en ligne
SQL Server Enterprise edition prend en charge les restaurations de pages en ligne, bien qu’elles utilisent la restauration hors connexion si la base de données est actuellement hors connexion. Dans la plupart des cas, une page endommagée peut être restaurée pendant que la base de données reste en ligne, y compris le groupe de fichiers sur lequel une page est restaurée. Lorsque le groupe de fichiers principal est en ligne, même si un ou plusieurs de ses groupes de fichiers secondaires sont hors connexion, les restaurations de pages sont généralement effectuées en ligne. Toutefois, parfois, une page endommagée peut nécessiter une restauration hors connexion. Par exemple, des dommages à certaines pages critiques peuvent empêcher le démarrage de la base de données.Avertissement
Si des pages endommagées stockent des métadonnées de base de données critiques, les mises à jour nécessaires aux métadonnées peuvent échouer lors d’une tentative de restauration de page en ligne. Dans ce cas, vous pouvez effectuer une restauration de page hors connexion, mais vous devez d’abord créer une sauvegarde de journal de fin (en sauvegardeant le journal des transactions à l’aide de RESTORE WITH NORECOVERY).
La restauration de page bénéficie du rapport amélioré des erreurs au niveau de la page (y compris les sommes de contrôle de page) et du suivi. Les pages détectées comme endommagées par la somme de vérification ou l’écriture endommagée, les pages endommagées peuvent être restaurées par une opération de restauration de page. Seules les pages spécifiées explicitement sont restaurées. Chaque page spécifiée est remplacée par la copie de cette page à partir de la sauvegarde de données spécifiée.
Lorsque vous restaurez les sauvegardes de journal suivantes, elles sont appliquées uniquement aux fichiers de base de données qui contiennent au moins une page en cours de récupération. Une chaîne non ininterrompue de sauvegardes de journaux doit être appliquée à la dernière restauration complète ou différentielle pour amener le groupe de fichiers qui contient la page à transférer au fichier journal actuel. Comme dans une restauration de fichier, le jeu de restauration avant est avancé avec une seule passe de restauration du journal. Pour qu’une restauration de page réussisse, les pages restaurées doivent être récupérées dans un état cohérent avec la base de données.
Sécurité
Autorisations
Si la base de données en cours de restauration n’existe pas, l’utilisateur doit disposer des autorisations CREATE DATABASE pour pouvoir exécuter RESTORE. Si la base de données existe, les autorisations RESTORE sont par défaut accordées aux membres des rôles serveur fixes sysadmin et dbcreator et au propriétaire (dbo) de la base de données (pour l’option FROM DATABASE_SNAPSHOT, la base de données existe toujours).
Les autorisations RESTORE sont accordées aux rôles dans lesquels les informations d’appartenance sont toujours facilement disponibles pour le serveur. Étant donné que l’appartenance au rôle de base de données fixe ne peut être vérifiée que lorsque la base de données est accessible et non endommagée, ce qui n’est pas toujours le cas lorsque RESTORE est exécuté, les membres du rôle de base de données fixe db_owner n’ont pas d’autorisations RESTORE.
Utilisation de SQL Server Management Studio
À compter de SQL Server 2014, SQL Server Management Studio prend en charge les restaurations de pages.
Pour restaurer des pages
Connectez-vous à l’instance appropriée du moteur de base de données SQL Server, dans l’Explorateur d’objets, cliquez sur le nom du serveur pour développer l’arborescence du serveur.
Développez Bases de données. Selon la base de données, sélectionnez une base de données utilisateur ou développez bases de données système, puis sélectionnez une base de données système.
Cliquez avec le bouton droit sur la base de données, pointez sur Tâches, pointez sur Restaurer, puis cliquez sur Page, ce qui ouvre la boîte de dialogue Restaurer la page .
Restauration
Cette section effectue la même fonction que celle de La restauration sur la base de données restore (page Général).Base de données
Spécifie la base de données à restaurer. Vous pouvez entrer une nouvelle base de données ou sélectionner une base de données existante dans la liste déroulante. La liste inclut toutes les bases de données sur le serveur, à l’exception des bases de données système master et tempdb.Avertissement
Pour restaurer une sauvegarde protégée par mot de passe, vous devez utiliser l’instruction RESTORE .
sauvegardeTail-Log
Entrez ou sélectionnez un nom de fichier dans l’appareil de sauvegarde où la sauvegarde de la fin du journal sera stockée pour la base de données.Jeux de sauvegarde
Cette section affiche les jeux de sauvegarde impliqués dans la restauration.En-tête de page Valeurs Nom Nom de l'ensemble de sauvegarde. Composant Composant sauvegardé : base de données, fichier ou <vide> (pour les journaux des transactions). Type Type de sauvegarde effectué : Full, Différentiel ou Transaction Log. Serveur Nom de l’instance du moteur de base de données qui a effectué l’opération de sauvegarde. Base de données Nom de la base de données impliquée dans l’opération de sauvegarde. Position Position du jeu de sauvegarde dans le volume. Premier LSN Numéro de séquence de journal (LSN) de la première transaction dans l'ensemble de sauvegarde. Vide pour les sauvegardes de fichiers. Dernier LSN Numéro de séquence de journal (LSN) de la dernière transaction du jeu de sauvegarde. Vide pour les sauvegardes de fichiers. Point de contrôle de LSN Numéro de séquence de journal (LSN) du point de contrôle le plus récent au moment de la création de la sauvegarde. LSN complet Numéro de séquence de journaux (LSN) de la sauvegarde complète de la base de données la plus récente. Date de début Date et heure de début de l’opération de sauvegarde, présentées dans le paramètre régional du client. Date de fin Date et heure de fin de l’opération de sauvegarde, présentées dans le paramètre régional du client. Taille Taille de l'ensemble de sauvegarde en octets. Nom d’utilisateur Nom de l’utilisateur qui a effectué l’opération de sauvegarde. Expiration Date et heure d’expiration du jeu de sauvegarde. Cliquez sur Vérifier pour vérifier l’intégrité des fichiers de sauvegarde nécessaires pour effectuer l’opération de restauration de page.
Pour identifier les pages endommagées, avec la base de données correcte sélectionnée dans la zone Base de données , cliquez sur Vérifier les pages de base de données. Il s’agit d’une opération longue.
Avertissement
Pour restaurer des pages spécifiques qui ne sont pas endommagées, cliquez sur Ajouter et entrez l’ID de fichier et l’ID de page des pages à restaurer.
La grille des pages est utilisée pour identifier les pages à restaurer. Initialement, cette grille est remplie à partir de la table système suspect_pages . Pour ajouter ou supprimer des pages de la grille, cliquez sur Ajouter ou Supprimer. Pour plus d’informations, consultez Gérer la table suspect_pages (SQL Server) .
La grille des ensembles de sauvegarde liste les ensembles de sauvegarde dans le plan de restauration par défaut. Si vous voulez, cliquez sur Vérifier pour vérifier que les sauvegardes sont lisibles et que les ensembles de sauvegarde sont complets, sans les restaurer. Pour plus d’informations, consultez RESTORE VERIFYONLY (Transact-SQL).
Pages
Pour restaurer les pages répertoriées dans la grille des pages, cliquez sur OK.
Utilisation de Transact-SQL
Pour spécifier une page dans une instruction RESTORE DATABASE, vous avez besoin de l’ID de fichier du fichier contenant la page et de l’ID de page de la page. La syntaxe requise est la suivante :
RESTORE DATABASE <database_name>
PAGE = '<file: page> [ ,... n ] ' [ ,... n ]
FROM <backup_device> [ ,... n ]
WITH NORECOVERY
Pour plus d’informations sur les paramètres de l’option PAGE, consultez arguments RESTORE (Transact-SQL). Pour plus d’informations sur la syntaxe RESTORE DATABASE, consultez RESTORE (Transact-SQL).
Pour restaurer des pages
Obtenez les ID de page des pages endommagées à restaurer. Une erreur de somme de contrôle ou d’écriture tronquée retourne l’ID de page, fournissant les informations requises pour spécifier les pages. Pour rechercher l’ID de page d’une page endommagée, utilisez l’une des sources suivantes.
Source de l’ID de page Sujet msdb..suspect_pages Gérer la table suspect_pages (SQL Server) Journal des erreurs Afficher le journal des erreurs SQL Server (SQL Server Management Studio) Traces d’événements Surveiller et répondre aux événements DBCC DBCC (Transact-SQL) Fournisseur WMI Concepts du fournisseur WMI pour les événements de serveur Démarrez une restauration de page avec une sauvegarde complète de base de données, de fichier ou de groupe de fichiers qui contient la page. Dans l’instruction RESTORE DATABASE, utilisez la clause PAGE pour répertorier les ID de page de toutes les pages à restaurer.
Appliquez les différentiels les plus récents .
Appliquez les sauvegardes de journal suivantes.
Créez une sauvegarde de journal de la base de données qui inclut le LSN final des pages restaurées, c’est-à-dire le point auquel la dernière page restaurée est mise hors connexion. Le LSN final, qui est défini dans le cadre de la première restauration dans la séquence, est le LSN cible de rétablissement. La progression en ligne du fichier contenant la page peut s’arrêter au LSN cible de reprise. Pour découvrir le LSN cible de restauration actuel d’un fichier, consultez la colonne redo_target_lsn de sys.master_files. Pour plus d’informations, consultez sys.master_files (Transact-SQL).
Restaurez la nouvelle sauvegarde du journal des événements. Une fois cette nouvelle sauvegarde de journal appliquée, la restauration de page est terminée et les pages sont désormais utilisables.
Remarque
Cette séquence est analogue à une séquence de restauration de fichier. En fait, les restaurations de pages et de fichiers peuvent être effectuées dans le cadre de la même séquence.
Exemple (Transact-SQL)
L’exemple suivant restaure quatre pages endommagées de fichier B avec NORECOVERY. Ensuite, deux sauvegardes de journal sont appliquées avec NORECOVERY, suivies de la sauvegarde de la fin du journal, qui est restaurée avec RECOVERY. Cet exemple effectue une restauration en ligne. Dans l’exemple, l’ID de fichier du fichier B est 1, et les ID de page des pages endommagées sont 57, 202, 916et 1016.
RESTORE DATABASE <database> PAGE='1:57, 1:202, 1:916, 1:1016'
FROM <file_backup_of_file_B>
WITH NORECOVERY;
RESTORE LOG <database> FROM <log_backup>
WITH NORECOVERY;
RESTORE LOG <database> FROM <log_backup>
WITH NORECOVERY;
BACKUP LOG <database> TO <new_log_backup>;
RESTORE LOG <database> FROM <new_log_backup> WITH RECOVERY;
GO
Voir aussi
RESTORE (Transact-SQL)
Appliquer des sauvegardes de journal des transactions (SQL Server)
Gérer la table suspect_pages (SQL Server)
Sauvegarder et restaurer des bases de données SQL Server