Подробное руководство: проверка процента восстановления в T-SQL

В сфере управления базами данных крайне важно отслеживать ход операции восстановления. Независимо от того, являетесь ли вы администратором базы данных или разработчиком, знание того, как проверить процент восстановления в T-SQL (Transact-SQL), поможет вам отслеживать процесс восстановления. В этой статье мы рассмотрим различные методы выполнения этой задачи, используя разговорный язык и попутно предоставляя примеры кода.

Метод 1: использование представления sys.dm_exec_requests
Один из способов проверить процент восстановления — запрос к представлению sys.dm_exec_requests. Это представление предоставляет информацию о текущих запросах, выполняющихся в SQL Server. Чтобы получить информацию о ходе восстановления, вы можете использовать столбец Percent_complete и отфильтровать результаты на основе команды, связанной с операцией восстановления, например «RESTORE DATABASE».

SELECT session_id, percent_complete
FROM sys.dm_exec_requests
WHERE command LIKE 'RESTORE DATABASE%'

Метод 2. Запрос таблицы набора резервных копий в базе данных msdb.
Другой подход предполагает запрос таблицы набора резервных копий в базе данных msdb. Эта таблица содержит информацию об операциях резервного копирования и восстановления. Отфильтровав записи по имени вашей базы данных и типу восстановления, вы можете получить процент восстановления.

SELECT percent_complete
FROM msdb.dbo.backupset
WHERE database_name = 'YourDatabaseName'
  AND type = 'D' -- D represents a full database backup
  AND is_copy_only = 0 -- Exclude copy-only backups
ORDER BY backup_finish_date DESC

Метод 3: использование команды RESTORE HEADERONLY
Команда RESTORE HEADERONLY может предоставить подробную информацию о наборе резервных копий, включая процент восстановления. Выполнив эту команду и проанализировав выходные данные, вы сможете извлечь нужную информацию.

DECLARE @headerInfo TABLE (
    BackupName NVARCHAR(128),
    BackupDescription NVARCHAR(255),
    BackupType SMALLINT,
    ExpirationDate DATETIME,
    Compressed BIT,
    Position SMALLINT,
    DeviceType TINYINT,
    UserName NVARCHAR(128),
    ServerName NVARCHAR(128),
    DatabaseName NVARCHAR(128),
    DatabaseVersion INT,
    DatabaseCreationDate DATETIME,
    BackupSize NUMERIC(20, 0),
    FirstLSN NUMERIC(25, 0),
    LastLSN NUMERIC(25, 0),
    CheckpointLSN NUMERIC(25, 0),
    DatabaseBackupLSN NUMERIC(25, 0),
    BackupStartDate DATETIME,
    BackupFinishDate DATETIME,
    SortOrder SMALLINT,
    CodePage SMALLINT,
    UnicodeLocaleId INT,
    UnicodeComparisonStyle INT,
    CompatibilityLevel TINYINT,
    SoftwareVendorId INT,
    SoftwareVersionMajor INT,
    SoftwareVersionMinor INT,
    SoftwareVersionBuild INT,
    MachineName NVARCHAR(128),
    Flags INT,
    BindingID UNIQUEIDENTIFIER,
    RecoveryForkID UNIQUEIDENTIFIER,
    Collation NVARCHAR(128),
    FamilyGUID UNIQUEIDENTIFIER,
    HasBulkLoggedData BIT,
    IsSnapshot BIT,
    IsReadOnly BIT,
    IsSingleUser BIT,
    HasBackupChecksums BIT,
    IsDamaged BIT,
    BeginsLogChain BIT,
    HasIncompleteMetaData BIT,
    IsForceOffline BIT,
    IsCopyOnly BIT,
    FirstRecoveryForkID UNIQUEIDENTIFIER,
    ForkPointLSN NUMERIC(25, 0),
    RecoveryModel NVARCHAR(60),
    DifferentialBaseLSN NUMERIC(25, 0),
    DifferentialBaseGUID UNIQUEIDENTIFIER,
    BackupTypeDescription NVARCHAR(60),
    BackupSetGUID UNIQUEIDENTIFIER,
    CompressedBackupSize BIGINT,
    Containment TINYINT,
    KeyAlgorithm NVARCHAR(32),
    EncryptorThumbprint VARBINARY(20),
    EncryptorType NVARCHAR(32)
)
INSERT INTO @headerInfo
EXEC ('RESTORE HEADERONLY FROM DISK = ''D:\Path\To\Your\BackupFile.bak''')
SELECT percent_complete
FROM @headerInfo

Используя T-SQL, вы получаете в свое распоряжение несколько методов проверки процента восстановления базы данных. Вы можете использовать представление sys.dm_exec_requests, запросить таблицу набора резервных копий в базе данных msdb или извлечь информацию из выходных данных команды RESTORE HEADERONLY. Эти методы позволяют отслеживать прогресс и гарантировать успешное восстановление.

Имея в своем наборе инструментов эти методы, вы можете уверенно управлять восстановлением базы данных в среде SQL Server. Не забудьте выбрать подход, который лучше всего соответствует вашим требованиям, и интегрировать его в рабочий процесс администрирования или разработки базы данных.