Restaurer des pages (SQL Server)Restore Pages (SQL Server)

S’APPLIQUE À : ouiSQL Server nonAzure SQL Database nonAzure Synapse Analytics (SQL DW) nonParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Cette rubrique explique comment restaurer des pages dans SQL ServerSQL Server à l'aide de SQL Server Management StudioSQL Server Management Studio ou de Transact-SQLTransact-SQL.This topic describes how to restore pages in SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. Dans la restauration de pages, l'objectif est de restaurer une ou plusieurs pages endommagées sans restaurer toute la base de données.The goal of a page restore is to restore one or more damaged pages without restoring the whole database. Généralement, les pages candidates à la restauration ont été marquées « suspectes » en raison d'une erreur rencontrée lors de l'accès à la page.Typically, pages that are candidates for restore have been marked as "suspect" because of an error that is encountered when accessing the page. Les pages suspectes sont identifiées dans la table suspect_pages dans la base de données msdb .Suspect pages are identified in the suspect_pages table in the msdb database.

Dans cette rubriqueIn This Topic

Avant de commencerBefore You Begin

Quand une restauration de pages est-elle utile ?When is a Page Restore Useful?

La restauration de pages permet de réparer des pages endommagées.A page restore is intended for repairing isolated damaged pages. La restauration et la récupération de quelques pages individuelles peuvent être plus rapides qu'une restauration de fichiers, ce qui réduit le nombre de données qui restent hors ligne pendant l'opération.Restoring and recovering a few individual pages might be faster than a file restore, reducing the amount of data that is offline during a restore operation. Toutefois, si vous avez besoin de restaurer un plus grand nombre de pages d'un fichier, il est généralement plus efficace de restaurer l'ensemble du fichier.However, if you have to restore more than a few pages in a file, it is generally more efficient to restore the whole file. Par exemple, si de nombreuses pages sur une unité indiquent une défaillance possible de l'unité, envisagez de restaurer le fichier éventuellement dans un emplacement différent et de réparer l'unité.For example, if lots of pages on a device indicate a pending device failure, consider restoring the file, possibly to another location, and repairing the device.

En outre, toutes les erreurs de page n'exigent pas une restauration.Furthermore, not all page errors require a restore. Il peut arriver qu'un problème survenant dans les données en cache, dans un index secondaire par exemple, ne puisse pas être résolu en recalculant les données.A problem can occur in cached data, such as a secondary index, that can be resolved by recalculating the data. Par exemple, si l’administrateur de la base de données supprime un index secondaire et le reconstruit, les données endommagées, bien qu’ayant été corrigées, ne sont pas indiquées comme telles dans la table suspect_pages .For example, if the database administrator drops a secondary index and rebuilds it, the corrupted data, although fixed, is not indicated as such in the suspect_pages table.

Limitations et restrictionsLimitations and Restrictions

  • La restauration de pages s'applique aux bases de données SQL ServerSQL Server qui utilisent les modes de récupération complète ou de récupération utilisant les journaux de transactions.Page restore applies to SQL ServerSQL Server databases that are using the full or bulk-logged recovery models. La restauration de pages n'est prise en charge que pour les groupes de fichiers en lecture-écriture.Page restore is supported only for read/write filegroups.

  • Seules les pages de bases de données peuvent être restaurées.Only database pages can be restored. La restauration de pages ne peut pas être utilisée pour restaurer les éléments suivants :Page restore cannot be used to restore the following:

    • Journal des transactionsTransaction log

    • Pages d’allocation : pages Global Allocation Map (GAM), pages Shared Global Allocation Map (SGAM) et pages Page Free Space (PFS).Allocation pages: Global Allocation Map (GAM) pages, Shared Global Allocation Map (SGAM) pages, and Page Free Space (PFS) pages.

    • Page 0 de tous les fichiers de données (page de démarrage des fichiers)Page 0 of all data files (the file boot page)

    • Page 1:9 (page de démarrage de la base de données)Page 1:9 (the database boot page)

    • Catalogue de texte intégralFull-text catalog

  • La fonction de restauration de pages est soumise aux conditions supplémentaires suivantes lorsque la base de données utilise le mode de récupération utilisant les journaux de transactions.For a database that uses the bulk-logged recovery model, page restore has the following additional conditions:

    • La sauvegarde d'un groupe de fichiers ou de données de pages hors connexion pose problème au niveau des données journalisées en bloc étant donné que les données hors connexion ne sont pas enregistrées dans le journal.Backing up while filegroup or page data is offline is problematic for bulk-logged data, because the offline data is not recorded in the log. Une page hors connexion peut empêcher la sauvegarde du journal.Any offline page can prevent backing up the log. Dans ce cas, envisagez l'utilisation de DBCC REPAIR car cette solution peut davantage minimiser la perte de données que la restauration de la sauvegarde la plus récente.In this cases, consider using DBCC REPAIR, because this might cause less data loss than restoring to the most recent backup.

    • Si une sauvegarde de fichier journal d'une base de données journalisée en bloc rencontre une page endommagée, elle échoue à moins que WITH CONTINUE_AFTER_ERROR n'ait été spécifié.If a log backup of a bulk-logged database encounters a bad page, it fails unless WITH CONTINUE_AFTER_ERROR is specified.

    • La restauration de pages ne fonctionne généralement pas avec la récupération utilisant les journaux de transactions.Page restore generally does not work with bulk-logged recovery.

      La méthode recommandée pour effectuer une restauration de pages consiste à affecter à la base de données le mode de restauration complète et à tenter une sauvegarde du journal.A best practice for performing page restore is to set the database to the full recovery model, and try a log backup. Si la sauvegarde du journal fonctionne, vous pouvez poursuivre la restauration de la page.If the log backup works, you can continue with the page restore. Si elle échoue, soit vous perdez effectivement le travail effectué depuis la dernière sauvegarde du journal, soit vous tentez d'exécuter DBCC avec l'option REPAIR_ALLOW_DATA_LOSS.If the log backup fails, you either have to lose work since the previous log backup or you have to try running DBCC must be run with the REPAIR_ALLOW_DATA_LOSS option.

RecommandationsRecommendations

  • Scénarios de restauration de pages :Page restore scenarios:

    Restauration de pages hors connexionOffline page restore
    Toutes les éditions de SQL ServerSQL Server prennent en charge la restauration des pages lorsque la base de données est hors connexion.All editions of SQL ServerSQL Server support restoring pages when the database is offline. Dans une restauration de pages hors connexion, la base de données est hors connexion pendant que les pages endommagées sont restaurées.In an offline page restore, the database is offline while damaged pages are restored. À la fin de la séquence de restauration, la base de données est mise en ligne.At the end of the restore sequence, the database comes online.

    Restauration de pages en ligneOnline page restore
    SQL ServerSQL Server Enterprise Edition prend en charge les restaurations de pages en ligne, bien qu’elle utilise la restauration hors ligne si la base de données est actuellement hors connexion.Enterprise edition supports online page restores, though they use offline restore if the database is currently offline. Dans la plupart des cas, une page endommagée peut être restaurée alors que la base de données reste en ligne, notamment le groupe de fichiers dans lequel une page est restaurée.In most cases, a damaged page can be restored while the database remains online, including the filegroup to which a page is being restored. Lorsque le groupe de fichiers primaire est en ligne, même si un ou plusieurs de ses groupes de fichiers secondaires sont hors connexion, les restaurations de pages sont habituellement effectuées en ligne.When the primary filegroup is online, even if one or more of its secondary filegroups are offline, page restores are usually performed online. Cependant, une page endommagée peut parfois nécessiter une restauration hors connexion.Occasionally, however, a damaged page can require an offline restore. Il arrive par exemple que l'état de certaines pages critiques empêche le démarrage de la base de données.For example, damage to certain critical pages might prevent the database from starting.

    Avertissement

    Si les pages endommagées stockent des métadonnées de base de données critiques, les mises à jour obligatoires des métadonnées peuvent échouer lors d'une tentative de restauration de pages en ligne.If damaged pages are storing critical database metadata, required updates to metadata might fail during an online page restore attempt. Dans ce cas, vous pouvez effectuer une restauration de pages hors connexion, mais vous devez d’abord créer une sauvegarde de la fin du fichier journal (en sauvegardant le journal des transactions à l’aide de RESTORE WITH NORECOVERY).In this case, you can perform an offline page restore, but first you must create a tail log backup (by backing up the transaction log using RESTORE WITH NORECOVERY).

  • La restauration de pages bénéficie de la fonction améliorée de signalisation des erreurs au niveau de la page (avec sommes de contrôle) et du suivi.Page restore takes advantage of the improved page-level error reporting (including page checksums) and tracking. Les pages endommagées détectées par somme de contrôle ou une erreur d’écriture, pages endommagées, peuvent être restaurées par une opération de restauration de pages.Pages that are detected as corrupted by check-summing or a torn write, damaged pages, can be restored by a page restore operation. Seules les pages spécifiées explicitement sont restaurées.Only explicitly specified pages are restored. Chaque page spécifiée est remplacée par la copie de cette page de la sauvegarde de données spécifiée.Each specified page is replaced by the copy of that page from the specified data backup.

    Lorsque vous restaurez les sauvegardes de journaux suivantes, elles s'appliquent uniquement aux fichiers de base de données qui contiennent au moins une page récupérée.When you restore the subsequent log backups, they are applied only to database files that contain at least one page that is being recovered. Si une chaîne ininterrompue de sauvegardes de journaux doit être appliquée à la dernière restauration complète ou différentielle pour restaurer par progression la page jusqu'au fichier journal actuel.An unbroken chain of log backups must be applied to the last full or differential restore to bring the filegroup that contains the page forward to the current log file. Comme dans le cas d'une restauration de fichiers, le jeu de restauration par progression est une opération avancée qui s'effectue en une seule passe.As in a file restore, the roll forward set is advanced with a single log redo pass. Pour qu'une restauration de pages aboutisse, les pages restaurées doivent être récupérées dans un état cohérent avec la base de données.For a page restore to succeed, the restored pages must be recovered to a state consistent with the database.

SécuritéSecurity

AutorisationsPermissions

Si la base de données restaurée n'existe pas, l'utilisateur doit posséder les autorisations CREATE DATABASE afin de pouvoir exécuter RESTORE.If the database being restored does not exist, the user must have CREATE DATABASE permissions to be able to execute RESTORE. Si la base de données existe, les autorisations RESTORE reviennent par défaut aux membres des rôles serveur fixe 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).If the database exists, RESTORE permissions default to members of the sysadmin and dbcreator fixed server roles and the owner (dbo) of the database (for the FROM DATABASE_SNAPSHOT option, the database always exists).

Les autorisations RESTORE sont attribuées aux rôles dont les informations d'appartenance sont toujours immédiatement accessibles à partir du serveur.RESTORE permissions are given to roles in which membership information is always readily available to the server. Étant donné que l’appartenance au rôle de base de données fixe ne peut être contrôlée que quand la base de données est accessible et non endommagée, ce qui n’est pas toujours le cas quand RESTORE est exécuté, les membres du rôle de base de données fixe db_owner ne détiennent pas d’autorisations RESTORE.Because fixed database role membership can be checked only when the database is accessible and undamaged, which is not always the case when RESTORE is executed, members of the db_owner fixed database role do not have RESTORE permissions.

Utilisation de SQL Server Management StudioUsing SQL Server Management Studio

À compter de SQL Server 2019 (15.x)SQL Server 2019 (15.x), SQL Server Management StudioSQL Server Management Studio prend en charge les restaurations de pages.Starting in SQL Server 2019 (15.x)SQL Server 2019 (15.x), SQL Server Management StudioSQL Server Management Studio supports page restores.

Pour restaurer des pagesTo restore pages

  1. Connectez-vous à l'instance appropriée du Moteur de base de données SQL ServerSQL Server Database Engine, puis dans l'Explorateur d'objets, cliquez sur le nom du serveur pour développer son arborescence.Connect to the appropriate instance of the Moteur de base de données SQL ServerSQL Server Database Engine, in Object Explorer, click the server name to expand the server tree.

  2. Développez Bases de données.Expand Databases. Selon la base de données, sélectionnez une base de données utilisateur ou développez Bases de données systèmeet sélectionnez une base de données système.Depending on the database, either select a user database or expand System Databases, and then select a system database.

  3. Cliquez avec le bouton droit sur la base de données, pointez sur Tâches, pointez sur Restaurer, puis cliquez sur Page, pour ouvrir la boîte de dialogue Restaurer la page .Right-click the database, point to Tasks, point to Restore, and then click Page, which opens the Restore Page dialog box.

    RestoreRestore
    Cette section effectue la même fonction que Restaurer sur dans la page Restaurer la base de données (page Général).This section performs the same function as that of Restore to on the Restore Database (General Page).

    Sauvegarde de la base de donnéesDatabase
    Spécifie la base de données à restaurer.Specifies the database to restore. Vous pouvez saisir le nom d'une nouvelle base de données ou en sélectionner une existante dans la liste déroulante.You can enter a new database or select an existing database from the drop-down list. La liste comprend toutes les bases de données se trouvant sur le serveur, à l'exception des bases de données système master et tempdb.The list includes all databases on the server, except the system databases master and tempdb.

    Avertissement

    Pour restaurer une sauvegarde protégée par mot de passe, vous devez utiliser l’instruction RESTORE .To restore a password-protected backup, you must use the RESTORE statement.

    Sauvegarde de la fin du journalTail-Log backup
    Entrez ou sélectionnez un nom de fichier dans Unité de sauvegarde où la sauvegarde de la fin du journal sera stockée pour la base de données.Enter or select a file name in Backup device where there tail-log backup will be stored for the database.

    Jeux de sauvegardeBackup Sets
    Cette section affiche les jeux de sauvegarde impliqués dans la restauration.This section displays the backup sets involved in the restoration.

    En-têteHeader ValeursValues
    NameName Nom du jeu de sauvegarde.The name of the backup set.
    ComposantComponent Composant sauvegardé : Base de données, Fichier ou <vide> (pour des journaux de transactions).The backed-up component: Database, File, or <blank> (for transaction logs).
    TypeType Types de sauvegarde proposés : Complète, Différentielle ou Journal des transactions.The type of backup performed: Full, Differential, or Transaction Log.
    ServerServer Nom de l'instance Moteur de base de donnéesDatabase Engine du moteur de base de données qui a effectué l'opération de sauvegarde.The name of the Moteur de base de donnéesDatabase Engine instance that performed the backup operation.
    Sauvegarde de la base de donnéesDatabase Nom de la base de données impliquée dans la sauvegarde.The name of the database involved in the backup operation.
    PositionPosition La position du jeu de sauvegarde dans le volume.The position of the backup set in the volume.
    Premier NSEFirst LSN Numéro séquentiel dans le journal (LSN) correspondant à la première transaction dans le jeu de sauvegarde.The log sequence number (LSN) of the first transaction in the backup set. Vide pour les sauvegardes de fichiers.Blank for file backups.
    Dernier NSELast LSN Numéro séquentiel dans le journal (LSN) correspondant à la dernière transaction dans le jeu de sauvegarde.The log sequence number (LSN) of the last transaction in the backup set. Vide pour les sauvegardes de fichiers.Blank for file backups.
    NSE du point de contrôleCheckpoint LSN Numéro séquentiel dans le journal du point de contrôle le plus récent au moment où la sauvegarde a été créée.The log sequence number (LSN) of the most recent checkpoint at the time the backup was created.
    Tous les NSEFull LSN Numéro séquentiel dans le journal (LSN) correspondant à la sauvegarde complète la plus récente de la base de donnéesThe log sequence number (LSN) of the most recent full database backup.
    Date de débutStart Date Date et heure de lancement de l'opération de sauvegarde, présentée conformément aux paramètres régionaux du client.The date and time when the backup operation began, presented in the regional setting of the client.
    Date de finFinish Date Date et heure de fin de l'opération de sauvegarde, exprimée d'après les paramètres régionaux du client.The date and time when the backup operation finished, presented in the regional setting of the client.
    TailleSize Taille du jeu de sauvegarde, exprimée en octets.The size of the backup set in bytes.
    Nom d'utilisateurUser Name Nom de l'utilisateur qui a exécuté l'opération de sauvegarde.The name of the user who performed the backup operation.
    ExpirationExpiration La date et l'heure d'expiration du jeu de sauvegarde.The date and time the backup set expires.

    Cliquez sur Vérifier pour vérifier l'intégrité des fichiers de sauvegarde nécessaires pour effectuer l'opération de restauration de pages.Click Verify to check the integrity of the backup files needed to perform the page restore operation.

  4. 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 la base de données.To identify corrupted pages, with the correct database selected in the Database box, click Check Database Pages. Cette opération est longue.This is a long running operation.

    Avertissement

    Pour restaurer les 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.To restore specific pages that are not corrupted, click Add and enter the File ID and Page ID of the pages to be restored.

  5. La grille de pages est utilisée pour identifier les pages à restaurer.The pages grid is used to identify the pages to be restored. Initialement, cette grille est remplie à partir de la table système suspect_pages .Initially, this grid is populated from the suspect_pages system table. Pour ajouter ou supprimer des pages de la grille, cliquez sur Ajouter ou Supprimer.To add or remove pages from the grid, click Add or Remove. Pour plus d’informations, consultez Gérer la table suspect_pages (SQL Server).For more information, see Manage the suspect_pages Table (SQL Server).

  6. La grille Jeux de sauvegarde répertorie les jeux de sauvegarde dans le plan de restauration par défaut.The Backup sets grid lists the backup sets in the default restore plan. Éventuellement, cliquez sur Vérifier pour vérifier que les sauvegardes sont lisibles et que les jeux de sauvegarde sont complets, sans les restaurer.Optionally, click Verify to verify that the backups are readable and that the backup sets are complete, without restoring them. Pour plus d’informations, consultez RESTORE VERIFYONLY (Transact-SQL).For more information, see RESTORE VERIFYONLY (Transact-SQL).

    PagesPages

  7. Restaurer les pages répertoriées dans la grille de pages, cliquez sur OK.To restore the pages listed in the pages grid, click OK.

Utilisation de Transact-SQLUsing Transact-SQL

Pour spécifier une page dans une instruction RESTORE DATABASE, vous avez besoin de l'ID du fichier qui contient la page et l'ID de la page.To specify a page in a RESTORE DATABASE statement, you need the file ID of the file containing the page and the page ID of the page. La syntaxe requise est la suivante :The required syntax is as follows:

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).For more information about the parameters of the PAGE option, see RESTORE Arguments (Transact-SQL). Pour plus d’informations sur la syntaxe de RESTORE DATABASE, consultez RESTORE (Transact-SQL).For more information about the RESTORE DATABASE syntax, see RESTORE (Transact-SQL).

Pour restaurer des pagesTo restore pages

  1. Obtenez les ID des pages endommagées à restaurer.Obtain the page IDs of the damaged pages to be restored. Une somme de contrôle ou une erreur d'écriture renvoie un ID de page fournissant les informations nécessaires pour la spécification des pages.A checksum or torn write error returns page ID, providing the information required for specifying the pages. Pour rechercher l'ID de page d'une page endommagée, utilisez une des sources suivantes.To look up page ID of a damaged page, use any of the following sources.

    Source d'ID de pageSource of page ID RubriqueTopic
    msdb..suspect_pagesmsdb..suspect_pages Gérer la table suspect_pages (SQL Server)Manage the suspect_pages Table (SQL Server)
    Journal des erreursError log Afficher le journal des erreurs SQL Server (SQL Server Management Studio)View the SQL Server Error Log (SQL Server Management Studio)
    Traces d'événementsEvent traces Surveiller et répondre aux événementsMonitor and Respond to Events
    DBCCDBCC DBCC (Transact-SQL)DBCC (Transact-SQL)
    Fournisseur WMIWMI provider Fournisseur WMI pour les concepts des événements de serveurWMI Provider for Server Events Concepts
  2. Démarrez une restauration de pages avec une sauvegarde complète de base de données, de fichier ou de groupe de fichiers contenant la page.Start a page restore with a full database, file, or filegroup backup that contains the page. Dans l'instruction RESTORE DATABASE, utilisez la clause PAGE pour énumérer les ID de toutes les pages à restaurer.In the RESTORE DATABASE statement, use the PAGE clause to list the page IDs of all of the pages to be restored.

  3. Appliquez les sauvegardes différentielles les plus récentes.Apply the most recent differentials .

  4. Appliquez les sauvegardes des journaux suivants.Apply the subsequent log backups.

  5. Créez une nouvelle sauvegarde de journal de la base de données incluant le NSE final des pages restaurées, c'est-à-dire le point auquel la dernière page restaurée est placée en mode hors connexion.Create a new log backup of the database that includes the final LSN of the restored pages, that is, the point at which the last restored page is taken offline. Le NSE final, qui est défini dans le cadre de la première restauration dans la séquence, est le NSE cible de restauration par progression.The final LSN, which is set as part of the first restore in the sequence, is the redo target LSN. La restauration en ligne par progression du fichier contenant la page est capable de s'arrêter au NSE cible de restauration par progression.Online roll forward of the file containing the page is able to stop at the redo target LSN. Pour connaître le NSE cible actuel de restauration d’un fichier, consultez la colonne redo_target_lsn de sys.master_files.To learn the current redo target LSN of a file, see the redo_target_lsn column of sys.master_files. Pour plus d’informations, consultez sys.master_files (Transact-SQL).For more information, see sys.master_files (Transact-SQL).

  6. Restaurez la nouvelle sauvegarde de fichierRestore the new log backup. Une fois appliquée cette nouvelle sauvegarde de journal, la restauration des pages est terminée et les pages sont désormais utilisables.After this new log backup is applied, the page restore is completed and the pages are now usable.

    Notes

    Cette séquence est analogue à une séquence de restauration de fichier.This sequence is analogous to a file restore sequence. En fait, la restauration de pages et les restaurations de fichiers peuvent être effectuées dans le cadre de la même séquence.In fact, page restore and file restores can both be performed as part of the same sequence.

Exemple (Transact-SQL)Example (Transact-SQL)

Cet exemple restaure quatre pages endommagées du fichier B à l'aide de NORECOVERY.The following example restores four damaged pages of file B with NORECOVERY. Ensuite, deux sauvegardes de journal sont appliquées à l'aide de NORECOVERY, suivies de la sauvegarde de la fin du journal, qui est restaurée à l'aide de RECOVERY.Next, two log backups are applied with NORECOVERY, followed with the tail-log backup, which is restored with RECOVERY. Cet exemple effectue une restauration en ligne.This example performs an online restore. Dans l'exemple, l'ID de fichier B est 1, et les ID des pages endommagées sont 57, 202, 916, et 1016.In the example, the file ID of file B is 1, and the page IDs of the damaged pages are 57, 202, 916, and 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 aussiSee Also

RESTORE (Transact-SQL) RESTORE (Transact-SQL)
Appliquer les sauvegardes du journal des transactions (SQL Server) Apply Transaction Log Backups (SQL Server)
Gérer la table suspect_pages (SQL Server) Manage the suspect_pages Table (SQL Server)
Sauvegarde et restauration des bases de données SQL ServerBack Up and Restore of SQL Server Databases