Восстановление страниц (SQL Server)Restore Pages (SQL Server)

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions)

В этом разделе описано, как восстанавливать страницы в SQL ServerSQL Server с помощью среды SQL Server Management StudioSQL Server Management Studio или 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. Задачей восстановления страниц является восстановление одной или нескольких поврежденных страниц без восстановления всей базы данных.The goal of a page restore is to restore one or more damaged pages without restoring the whole database. Обычно страницы, являющиеся кандидатами на восстановление, в результате ошибок доступа помечаются как «подозрительные».Typically, pages that are candidates for restore have been marked as "suspect" because of an error that is encountered when accessing the page. Информация об указанных подозрительных страницах хранится в таблице suspect_pages базы данных msdb .Suspect pages are identified in the suspect_pages table in the msdb database.

В этом разделеIn This Topic

Перед началомBefore You Begin

Области использования функции восстановления страницWhen is a Page Restore Useful?

Восстановление страницы предназначено для исправления отдельных поврежденных страниц.A page restore is intended for repairing isolated damaged pages. Восстановление нескольких отдельных страниц может потребовать меньше времени, чем восстановление файла, и уменьшить объем данных, которые будут недоступны во время операции восстановления вне сети.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. Но в тех случаях, когда в файле требуется восстановление относительно большого числа страниц, может оказаться более эффективным восстановить весь файл.However, if you have to restore more than a few pages in a file, it is generally more efficient to restore the whole file. Большое количество таких страниц на устройстве может быть признаком приближающегося сбоя оборудования. В этом случае попробуйте вместо восстановления страниц восстановить файл целиком, по возможности в другое место, и отремонтировать устройство.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.

Более того, не все страницы с ошибками нужно восстанавливать.Furthermore, not all page errors require a restore. Проблема может относиться к кэшированным данным, например во вторичном индексе. Эта проблема разрешается повторным вычислением этих данных.A problem can occur in cached data, such as a secondary index, that can be resolved by recalculating the data. Например, если администратор базы данных удалил, а затем перестроил вторичный индекс, то поврежденные данные после исправления не отражаются в таблице 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 and Restrictions

  • Восстановление страницы применяется к базам данных SQL ServerSQL Server , где используется модель полного восстановления или модель восстановления с неполным протоколированием.Page restore applies to SQL ServerSQL Server databases that are using the full or bulk-logged recovery models. Поддержка восстановления страниц осуществляется только для файловых групп, доступных для чтения и записи.Page restore is supported only for read/write filegroups.

  • Только страницы базы данных могут быть восстановлены.Only database pages can be restored. Восстановление страниц не может быть использовано для восстановления нижеприведенных компонентов:Page restore cannot be used to restore the following:

    • Журнал транзакцийTransaction log

    • Страницы размещения: страницы глобальной карты распределения (GAM), страницы общей глобальной карты (SGAM) и страницы свободного места на странице (PFS).Allocation pages: Global Allocation Map (GAM) pages, Shared Global Allocation Map (SGAM) pages, and Page Free Space (PFS) pages.

    • Страница 0 всех файлов данных (загрузочная страница файла)Page 0 of all data files (the file boot page)

    • Страница 1:9 (загрузочная страница базы данных)Page 1:9 (the database boot page)

    • Полнотекстовый каталогFull-text catalog

  • Для базы данных, использующей модель восстановления с неполным протоколированием, восстановление страниц требует выполнения следующих дополнительных условий.For a database that uses the bulk-logged recovery model, page restore has the following additional conditions:

    • Создание резервных копий в момент, когда файловая группа или данные страницы находятся в режиме «вне сети», затруднительно для данных с неполным протоколированием, поскольку данные в режиме «вне сети» не записываются в журнал.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. Пребывание любой страницы в режиме «вне сети» может помешать резервному копированию журнала.Any offline page can prevent backing up the log. В этом случае следует использовать команду DBCC REPAIR, так как при этом потери данных будут меньше, чем при восстановлении из самой последней резервной копии.In this cases, consider using DBCC REPAIR, because this might cause less data loss than restoring to the most recent backup.

    • Когда при резервном копировании журнала базы данных с неполным протоколированием выявляется поврежденная страница, оно завершается ошибкой, если не указано предложение WITH CONTINUE_AFTER_ERROR.If a log backup of a bulk-logged database encounters a bad page, it fails unless WITH CONTINUE_AFTER_ERROR is specified.

    • Восстановление страниц обычно не работает в модели восстановления с неполным протоколированием.Page restore generally does not work with bulk-logged recovery.

      Лучший способ выполнить восстановление страницы — это установить для базы данных модель полного восстановления и выполнить попытку резервного копирования журнала.A best practice for performing page restore is to set the database to the full recovery model, and try a log backup. Если восстановление журнала работает, то можно продолжить и выполнить восстановление страницы.If the log backup works, you can continue with the page restore. В случае ошибка резервного копирования журнала придется либо потерять все изменения с момента предыдущего резервного копирования журнала, либо попытаться выполнить проверку базы данных (DBCC) с параметром 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.

РекомендацииRecommendations

  • Сценарии восстановления страницыPage restore scenarios:

    Восстановление страниц в режиме «вне сети»Offline page restore
    Все выпуски SQL ServerSQL Server поддерживают восстановление страниц, когда база данных находится в автономном режиме.All editions of SQL ServerSQL Server support restoring pages when the database is offline. На время проведения восстановление страниц в автономном режиме база данных переключается в соответствующий режим.In an offline page restore, the database is offline while damaged pages are restored. В конце последовательности восстановления база данных переходит в режим «в сети».At the end of the restore sequence, the database comes online.

    Восстановление страниц в оперативном режимеOnline page restore
    SQL ServerSQL Server Выпуск Enterprise поддерживает восстановление страниц в оперативном режиме. Но если база данных работает в режиме "вне сети", то используется функция автономного восстановления.Enterprise edition supports online page restores, though they use offline restore if the database is currently offline. В большинстве случаев поврежденная страница может быть восстановлена во время работы базы данных в режиме «в сети», включая файловую группу, в которой должна быть восстановлена страница.In most cases, a damaged page can be restored while the database remains online, including the filegroup to which a page is being restored. Если первичная файловая группа находится в режиме «в сети», а одна или несколько дополнительных файловых групп находятся в режиме «вне сети», используются операции оперативного восстановления.When the primary filegroup is online, even if one or more of its secondary filegroups are offline, page restores are usually performed online. Иногда для восстановления поврежденной страницы необходимо использовать функции автономного восстановления.Occasionally, however, a damaged page can require an offline restore. Например, повреждение некоторых важных страниц может привести к проблемам с запуском базы данных.For example, damage to certain critical pages might prevent the database from starting.

    Предупреждение

    Если поврежденные страницы содержат критические метаданные баз данных, то во время попытки восстановление страниц в оперативном режиме при выполнении необходимых обновлений метаданных может произойти ошибка.If damaged pages are storing critical database metadata, required updates to metadata might fail during an online page restore attempt. В этом случае можно выполнить восстановление страниц в автономном режиме, но сначала необходимо создать резервную копию заключительного фрагмента журнала (путем резервного копирования журнала транзакций с параметром 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).

  • Для восстановления страниц используются усовершенствованные функции отчетов об ошибках на уровне страниц (включая контрольные суммы страниц) и функции отслеживания.Page restore takes advantage of the improved page-level error reporting (including page checksums) and tracking. Страницы, определенные как имеющие такие ошибки, как контрольное суммирование или прерванная запись, т. е. поврежденные страницы, можно восстановить с помощью операции восстановления страниц.Pages that are detected as corrupted by check-summing or a torn write, damaged pages, can be restored by a page restore operation. Восстанавливаются только явно определенные страницы.Only explicitly specified pages are restored. Каждая указанная страница заменяется копией страницы из указанной резервной копии данных.Each specified page is replaced by the copy of that page from the specified data backup.

    При восстановлении последующих резервных копий журналов они применяются только к файлам базы данных, содержащим хотя бы одну восстанавливаемую страницу.When you restore the subsequent log backups, they are applied only to database files that contain at least one page that is being recovered. Для перевода файловой группы в состояние, соответствующее текущему файлу журнала, необходимо применить непрерывную последовательность резервных копий журнала к последнему экземпляру, полученному в результате полного или разностного восстановления.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. Как и при восстановлении файлов, набор данных наката продвигается одним проходом повторения журнала.As in a file restore, the roll forward set is advanced with a single log redo pass. Для успешного выполнения операции восстановления состояние восстановленных страниц должно соответствовать состоянию базы данных.For a page restore to succeed, the restored pages must be recovered to a state consistent with the database.

безопасностьSecurity

PermissionsPermissions

Если восстанавливаемая база данных не существуют, для выполнения инструкции RESTORE у пользователя должны быть разрешения CREATE DATABASE.If the database being restored does not exist, the user must have CREATE DATABASE permissions to be able to execute RESTORE. Если база данных существует, разрешения на выполнение инструкции RESTORE по умолчанию предоставлены членам предопределенных ролей сервера sysadmin и dbcreator , а также владельцу базы данных (dbo) (для параметра FROM DATABASE_SNAPSHOT база данных всегда существует).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).

Разрешения на выполнение инструкции RESTORE даются ролям, в которых данные о членстве всегда доступны серверу.RESTORE permissions are given to roles in which membership information is always readily available to the server. Так как членство в предопределенной роли базы данных может быть проверено только тогда, когда база данных доступна и не повреждена, что не всегда имеет место при выполнении инструкции RESTORE, члены предопределенной роли базы данных db_owner не имеют разрешений 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.

Использование среды SQL Server Management StudioUsing SQL Server Management Studio

Начиная с SQL Server 2019 (15.x)SQL Server 2019 (15.x), среда SQL Server Management StudioSQL Server Management Studio поддерживает восстановление страниц.Starting in SQL Server 2019 (15.x)SQL Server 2019 (15.x), SQL Server Management StudioSQL Server Management Studio supports page restores.

Восстановление страницTo restore pages

  1. После подключения к соответствующему экземпляру компонента Компонент SQL Server Database EngineSQL Server Database Engineв обозревателе объектов разверните дерево сервера, щелкнув имя сервера.Connect to the appropriate instance of the Компонент SQL Server Database EngineSQL Server Database Engine, in Object Explorer, click the server name to expand the server tree.

  2. Разверните узел Базы данных.Expand Databases. В зависимости от типа восстанавливаемой базы данных выберите пользовательскую базу данных или раскройте узел Системные базы данныхи выберите системную базу данных.Depending on the database, either select a user database or expand System Databases, and then select a system database.

  3. Щелкните правой кнопкой мыши базу данных, выберите пункт Задачи, затем пункт Восстановитьи пункт Страница. Откроется диалоговое окно Восстановление страницы .Right-click the database, point to Tasks, point to Restore, and then click Page, which opens the Restore Page dialog box.

    ВосстановлениеRestore
    В этом разделе выполняется та же функция, что и в пункте Восстановить в из раздела Восстановление базы данных (страница "Общие").This section performs the same function as that of Restore to on the Restore Database (General Page).

    База данныхDatabase
    Задает базу данных для восстановления.Specifies the database to restore. Можно ввести новую базу данных или выбрать уже существующую из раскрывающегося списка.You can enter a new database or select an existing database from the drop-down list. Список включает все базы данных на сервере, за исключением системных баз данных master и tempdb.The list includes all databases on the server, except the system databases master and tempdb.

    Предупреждение

    Для восстановления резервной копии, защищенной паролем, необходимо использовать инструкцию RESTORE .To restore a password-protected backup, you must use the RESTORE statement.

    Резервная копия заключительного фрагмента журналаTail-Log backup
    Введите или выберите имя файла в поле Устройство резервного копирования , где будет сохранена резервная копия заключительного фрагмента журнала для базы данных.Enter or select a file name in Backup device where there tail-log backup will be stored for the database.

    Резервные наборы данныхBackup Sets
    В этом разделе рассматриваются резервные наборы данных, участвующие в восстановлении.This section displays the backup sets involved in the restoration.

    ЗаголовокHeader ЗначенияValues
    имя;Name Имя резервного набора данных.The name of the backup set.
    КомпонентComponent Компонент, сохраненный в резервной копии: база данных, файл или <blank> (для журналов транзакций).The backed-up component: Database, File, or <blank> (for transaction logs).
    ТипType Тип выполняемого резервного копирования: Полное, Разностноеили Журнал транзакций.The type of backup performed: Full, Differential, or Transaction Log.
    ServerServer Имя экземпляра компонента Компонент Database EngineDatabase Engine , выполнившего операцию резервного копирования.The name of the Компонент Database EngineDatabase Engine instance that performed the backup operation.
    База данныхDatabase Имя базы данных, участвовавшей в операции резервного копирования.The name of the database involved in the backup operation.
    ПоложениеPosition Расположение резервного набора данных в томе.The position of the backup set in the volume.
    Первый номер LSNFirst LSN Регистрационный номер в журнале первой транзакции в резервном наборе данных.The log sequence number (LSN) of the first transaction in the backup set. Пустой для резервных копий файлов.Blank for file backups.
    Последний номер LSNLast LSN Регистрационный номер в журнале последней транзакции в резервном наборе данных.The log sequence number (LSN) of the last transaction in the backup set. Пустой для резервных копий файлов.Blank for file backups.
    Номер LSN для контрольной точкиCheckpoint LSN Регистрационный номер транзакции в журнале (номер LSN) для последней контрольной точки на время создания резервной копии.The log sequence number (LSN) of the most recent checkpoint at the time the backup was created.
    Полный номер LSNFull LSN Номер LSN в журнале последнего полного резервного копирования базы данных.The log sequence number (LSN) of the most recent full database backup.
    Дата началаStart Date Дата и время начала операции резервного копирования, указанные в региональных настройках клиента.The date and time when the backup operation began, presented in the regional setting of the client.
    Дата завершенияFinish Date Дата и время завершения операции резервного копирования, указанные в формате, соответствующем региональным настройкам клиента.The date and time when the backup operation finished, presented in the regional setting of the client.
    РазмерSize Размер резервного набора данных в байтах.The size of the backup set in bytes.
    Имя пользователяUser Name Имя пользователя, выполнившего операцию резервного копирования.The name of the user who performed the backup operation.
    Истечение срокаExpiration Дата и время истечения срока действия резервного набора данных.The date and time the backup set expires.

    Выберите Проверка для проверки целостности файлов резервных копий, необходимых для операции восстановления страниц.Click Verify to check the integrity of the backup files needed to perform the page restore operation.

  4. Чтобы найти поврежденные страницы, выберите нужную базу данных поле База данных и нажмите кнопку Проверить страницы базы данных.To identify corrupted pages, with the correct database selected in the Database box, click Check Database Pages. Выполнение этой операции занимает длительное время.This is a long running operation.

    Предупреждение

    Чтобы восстановить конкретные неповрежденные страницы, нажмите кнопку Добавить и введите Идентификатор файла и Идентификатор страница для восстанавливаемых страниц.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. Для определения восстанавливаемых страниц используется сетка страниц.The pages grid is used to identify the pages to be restored. Изначально эта сетка заполняется с использованием системной таблицы suspect_pages .Initially, this grid is populated from the suspect_pages system table. Для добавления или удаления страниц из сетки используйте команды Добавить или Удалить.To add or remove pages from the grid, click Add or Remove. Дополнительные сведения см. в разделе Управление таблицей suspect_pages (SQL Server).For more information, see Manage the suspect_pages Table (SQL Server).

  6. В сетке Резервные наборы данных перечислены резервные наборы в плане восстановления по умолчанию.The Backup sets grid lists the backup sets in the default restore plan. При необходимости нажмите кнопку Проверить , чтобы убедиться, не выполняя восстановление, что резервные копии могут быть прочитаны, а резервные наборы данных являются полными.Optionally, click Verify to verify that the backups are readable and that the backup sets are complete, without restoring them. Дополнительные сведения см. в разделе RESTORE VERIFYONLY (Transact-SQL).For more information, see RESTORE VERIFYONLY (Transact-SQL).

    СтраницыPages

  7. Чтобы восстановить страницы, перечисленные в сетке страниц, нажмите кнопку ОК.To restore the pages listed in the pages grid, click OK.

Использование Transact-SQLUsing Transact-SQL

Чтобы указать страницу в инструкции RESTORE DATABASE, понадобится идентификатор файла, содержащего страницу, и идентификатор страницы.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. Необходимый синтаксис выглядит следующим образом:The required syntax is as follows:

RESTORE DATABASE <database_name>

PAGE = '<file: page> [ ,... n ] ' [ ,... n ]

FROM <backup_device> [ ,... n ]

WITH NORECOVERY

Дополнительные сведения о параметрах PAGE см. в разделе Аргументы RESTORE (Transact-SQL).For more information about the parameters of the PAGE option, see RESTORE Arguments (Transact-SQL). Дополнительные сведения о синтаксисе RESTORE DATABASE см. в разделе RESTORE (Transact-SQL).For more information about the RESTORE DATABASE syntax, see RESTORE (Transact-SQL).

Восстановление страницTo restore pages

  1. Получите идентификаторы поврежденных страниц, подлежащих восстановлению.Obtain the page IDs of the damaged pages to be restored. Контрольное суммирование или прерванная запись возвращают идентификатор страницы, обеспечивая сведения, необходимые для указания страниц.A checksum or torn write error returns page ID, providing the information required for specifying the pages. Чтобы определить идентификатор поврежденной страницы, используйте любой из нижеследующих источников.To look up page ID of a damaged page, use any of the following sources.

    Источник идентификатора страницыSource of page ID РазделTopic
    msdb.suspect_pagesmsdb..suspect_pages Управление таблицей suspect_pages (SQL Server)Manage the suspect_pages Table (SQL Server)
    Журнал ошибокError log Просмотр журнала ошибок SQL Server (среда SQL Server Management Studio)View the SQL Server Error Log (SQL Server Management Studio)
    История событийEvent traces Наблюдение и обработка событийMonitor and Respond to Events
    DBCCDBCC DBCC (Transact-SQL)DBCC (Transact-SQL)
    Поставщик WMIWMI provider Основные понятия о поставщике WMI для событий сервераWMI Provider for Server Events Concepts
  2. Начните восстановление страниц с полной резервной копии базы данных либо резервной копии файла или файловой группы, содержащей страницу.Start a page restore with a full database, file, or filegroup backup that contains the page. В инструкции RESTORE DATABASE используйте предложение PAGE для перечисления идентификаторов всех страниц, подлежащих восстановлению.In the RESTORE DATABASE statement, use the PAGE clause to list the page IDs of all of the pages to be restored.

  3. Примените последние разностные резервные копии.Apply the most recent differentials .

  4. Примените последующие резервные копии журнала.Apply the subsequent log backups.

  5. Создайте новую резервную копию журнала базы данных, включающую в себя итоговый номер LSN восстановленных страниц, то есть момент, когда последняя из восстановленных страниц переведена в режим «вне сети».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. Итоговый номер LSN, устанавливаемый в качестве части первого восстановления в последовательности, является номером LSN цели повтора.The final LSN, which is set as part of the first restore in the sequence, is the redo target LSN. Накат файла «в сети», содержащего страницу, сможет остановиться у номера LSN цели повтора.Online roll forward of the file containing the page is able to stop at the redo target LSN. Чтобы выяснить текущий номер LSN цели повтора файла, обратитесь к столбцу redo_target_lsn в sys.master_files.To learn the current redo target LSN of a file, see the redo_target_lsn column of sys.master_files. Дополнительные сведения см. в разделе sys.master_files (Transact-SQL).For more information, see sys.master_files (Transact-SQL).

  6. Восстановите новую резервную копию журнала.Restore the new log backup. Как только эта новая резервная копия журнала будет применена, восстановление страниц завершается, и страницы готовы к использованию.After this new log backup is applied, the page restore is completed and the pages are now usable.

    Примечание

    Эта последовательность аналогична последовательности восстановления файла.This sequence is analogous to a file restore sequence. Фактически восстановление страниц и восстановление файлов могут выполняться как части одной и той же последовательности.In fact, page restore and file restores can both be performed as part of the same sequence.

Примеры (Transact-SQL)Example (Transact-SQL)

В этом примере восстанавливаются четыре поврежденные страницы файла B в режиме NORECOVERY.The following example restores four damaged pages of file B with NORECOVERY. Далее, после применения двух резервных копий журналов с параметром NORECOVERY, следует восстановление резервной копии заключительного фрагмента журнала с параметром RECOVERY.Next, two log backups are applied with NORECOVERY, followed with the tail-log backup, which is restored with RECOVERY. В этом примере выполняется восстановление в сети.This example performs an online restore. В следующем примере идентификатором файла B является 1, а идентификаторами поврежденных страниц — 57, 202, 916и 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  

См. также:See Also

RESTORE (Transact-SQL) RESTORE (Transact-SQL)
Применение резервных копий журналов транзакций (SQL Server) Apply Transaction Log Backups (SQL Server)
Управление таблицей suspect_pages (SQL Server) Manage the suspect_pages Table (SQL Server)
Резервное копирование и восстановление баз данных SQL ServerBack Up and Restore of SQL Server Databases