RESTORE HEADERONLY (Transact-SQL)

返回包含特定备份设备上所有备份集的所有备份标头信息的结果集。

注意注意

有关参数的说明,请参阅 RESTORE 参数 (Transact-SQL)

主题链接图标Transact-SQL 语法约定

语法

RESTORE HEADERONLY 
FROM <backup_device> 
[ WITH 
 {
--Backup Set Options
   FILE = { backup_set_file_number | @backup_set_file_number } 
 | PASSWORD = { password | @password_variable } 

--Media Set Options
 | MEDIANAME = { media_name | @media_name_variable } 
 | MEDIAPASSWORD = { mediapassword | @mediapassword_variable }

--Error Management Options
 | { CHECKSUM | NO_CHECKSUM } 
 | { STOP_ON_ERROR | CONTINUE_AFTER_ERROR }

--Tape Options
 | { REWIND | NOREWIND } 
 | { UNLOAD | NOUNLOAD }  
 } [ ,...n ]
]
[;]

<backup_device> ::=
{ 
   { logical_backup_device_name |
      @logical_backup_device_name_var }
   | { DISK | TAPE } = { 'physical_backup_device_name' |
       @physical_backup_device_name_var } 
} 

参数

有关 RESTORE HEADERONLY 参数的说明,请参阅 RESTORE 参数 (Transact-SQL)

结果集

对于给定设备上的每个备份,服务器均发送一行包含以下各列的标头信息:

注意注意

RESTORE HEADERONLY 会查看介质上的所有备份集。因此,使用高容量磁带机时,生成此结果集可能需要一些时间。若要快速查看介质而不获取有关每个备份集的信息,请使用 RESTORE LABELONLY 或指定 FILE = backup_set_file_number。

注意注意

由于 Microsoft 磁带格式的固有特点,来自其他软件程序的备份集可以与 Microsoft SQL Server 备份集在同一介质上占有空间。在由 RESTORE HEADERONLY 返回的结果集中,每一个来自其他软件程序的备份集都占用一行。

列名

数据类型

SQL Server 备份集说明

其他备份集说明

BackupName

nvarchar(128)

备份集名称。

数据集名称

BackupDescription

nvarchar(255)

备份集说明。

数据集说明

BackupType

smallint

备份类型:

1 = 数据库

2 = 事务日志

4 = 文件

5 = 差异数据库

6 = 差异文件

7 = 部分

8 = 差异部分

备份类型:

1 = 正常

5 = 差异

16 = 增量

17 = 每天

ExpirationDate

datetime

备份集的过期时间。

NULL

Compressed

BYTE(1)

是否使用基于软件的压缩对备份集进行压缩:

0 = 否

1 = 是

是否使用基于软件的压缩对备份集进行压缩:

0 = 否

1 = 是

位置

smallint

备份集在卷中的位置(用于 FILE = 选项)。

备份集在卷中的位置

DeviceType

tinyint

与用于备份操作的设备对应的编号:

磁盘:

2 = 逻辑

102 = 物理

磁带:

5 = 逻辑

105 = 物理

虚拟设备:

7 = 逻辑

107 = 物理

逻辑设备名称和设备号在 sys.backup_devices 中;有关详细信息,请参阅 sys.backup_devices (Transact-SQL)

NULL

UserName

nvarchar(128)

执行备份操作的用户名。

执行备份操作的用户名

ServerName

nvarchar(128)

写入备份集的服务器名称。

NULL

DatabaseName

nvarchar(128)

已备份的数据库名称。

NULL

DatabaseVersion

int

从其中创建备份的数据库的版本。

NULL

DatabaseCreationDate

datetime

数据库的创建日期和时间。

NULL

BackupSize

numeric(20,0)

备份大小(以字节为单位)。

NULL

FirstLSN

numeric(25,0)

备份集中第一个日志记录的日志序列号。

NULL

LastLSN

numeric(25,0)

备份集之后的下一条日志记录的日志序列号。

NULL

CheckpointLSN

numeric(25,0)

创建备份时最后一个检查点的日志序号。

NULL

DatabaseBackupLSN

numeric(25,0)

最近的数据库完整备份的日志序列号。

DatabaseBackupLSN 是“检查点的起点”,将在备份开始时被触发。如果在数据库空闲且未配置复制进行备份,则此 LSN 将与 FirstLSN 一致。

NULL

BackupStartDate

datetime

备份操作的开始日期和时间。

写入介质的日期

BackupFinishDate

datetime

备份操作的完成日期和时间。

写入介质的日期

SortOrder

smallint

服务器排列次序。该列仅对数据库备份有效。提供该列是为了向后兼容。

NULL

CodePage

smallint

服务器使用的服务器代码页或字符集。

NULL

UnicodeLocaleId

int

用于 Unicode 字符数据排序的服务器 Unicode 区域设置 ID 配置选项。提供该列是为了向后兼容。

NULL

UnicodeComparisonStyle

int

服务器 Unicode 比较风格配置选项,可提供对 Unicode 数据排序的额外控制。提供该列是为了向后兼容。

NULL

CompatibilityLevel

tinyint

从其中创建备份的数据库兼容级别设置。

NULL

SoftwareVendorId

int

软件供应商标识号。对于 SQL Server,该号码是 4608(用十六进制表示是 0x1200)。

软件供应商标识号

SoftwareVersionMajor

int

创建备份集的服务器主要版本号。

创建备份集的软件的主要版本号

SoftwareVersionMinor

int

创建备份集的服务器次要版本号。

创建备份集的软件的次要版本号

SoftwareVersionBuild

int

创建备份集的服务器内部版本号。

NULL

MachineName

nvarchar(128)

执行备份操作的计算机名称。

执行备份操作的计算机的类型

Flags

int

设置为 1 时单个标志位的含义:

1 = 日志备份包含大容量日志记录操作。

2 = 快照备份。

4 = 备份时数据库为只读。

8 = 备份时数据库处于单用户模式。

16 = 备份包含备份校验和。

32 = 备份时数据库损坏,但要求备份操作继续执行,不考虑发生的错误。

64 = 结尾日志备份。

128 = 包含不完整元数据的结尾日志备份。

256 = 包含 NORECOVERY 的结尾日志备份。

重要说明重要提示
我们建议您使用单个布尔值列(下面列出了以 HasBulkLoggedData 开始且以 IsCopyOnly 结束的列)代替 Flags

NULL

BindingID

uniqueidentifier

数据库的绑定 ID。这与 sys.database_recovery_statusdatabase_guid 相对应。恢复数据库时,会分配一个新值。另请参阅 FamilyGUID(见下文)。

NULL

RecoveryForkID

uniqueidentifier

恢复分叉结尾的 ID。此列与 backupset 表中的 last_recovery_fork_guid 相对应。

对于数据备份,RecoveryForkID 等于 FirstRecoveryForkID

NULL

Collation

nvarchar(128)

数据库使用的排序规则。

NULL

FamilyGUID

uniqueidentifier

创建时的原始数据库 ID。恢复数据库时,此值保持不变。

NULL

HasBulkLoggedData

bit

1 = 包含大容量日志记录操作的日志备份。

NULL

IsSnapshot

bit

1 = 快照备份。

NULL

IsReadOnly

bit

1 = 备份时数据库为只读。

NULL

IsSingleUser

bit

1 = 备份时数据库处于单用户模式。

NULL

HasBackupChecksums

bit

1 = 备份包含备份校验和。

NULL

IsDamaged

bit

1 = 备份时数据库损坏,但要求备份操作继续执行,不考虑发生的错误。

NULL

BeginsLogChain

bit

1 = 这是一个连续的日志备份链中的第一个环节。日志链的开始处是创建数据库后所做的第一个日志备份,或者是数据库从简单模式切换到完整模式或大容量日志恢复模式时所做的第一个日志备份。

NULL

HasIncompleteMetaData

bit

1 = 包含不完整元数据的结尾日志备份。

有关包含不完整元数据的结尾日志备份的信息,请参阅结尾日志备份

NULL

IsForceOffline

bit

1 = 采用 NORECOVERY 的备份;数据库采用脱机备份。

NULL

IsCopyOnly

bit

1 = 仅复制备份。

仅复制备份不会影响数据库的总体备份和恢复进程。有关详细信息,请参阅仅复制备份

NULL

FirstRecoveryForkID

uniqueidentifier

起始恢复分叉的 ID。此列与 backupset 中的 first_recovery_fork_guid 相对应。

对于数据备份,FirstRecoveryForkID 等于 RecoveryForkID

NULL

ForkPointLSN

numeric(25,0) NULL

如果 FirstRecoveryForkID 不等于 RecoveryForkID,则此值为分叉点的日志序列号。否则,此值为 NULL。

NULL

RecoveryModel

nvarchar(60)

数据库的恢复模式,可以是下列值之一:

FULL

BULK-LOGGED

SIMPLE

NULL

DifferentialBaseLSN

numeric(25,0) NULL

对于单基准的差异备份,该值等于差异基准的 FirstLSN;大于或等于 DifferentialBaseLSN 的 LSN 的更改会包括在差异中。

对于多基准的差异备份,该值为 NULL,基准 LSN 必须在文件级别确定。有关详细信息,请参阅 RESTORE FILELISTONLY (Transact-SQL)

对于非差异备份类型,该值始终为 NULL。

有关详细信息,请参阅差异备份的基准

NULL

DifferentialBaseGUID

uniqueidentifier

对于单基准的差异备份,该值为差异基准的唯一标识符。

对于多基准差异,此值为 NULL,且必须确定每个文件的差异基准。

对于非差异备份类型,此值为 NULL。

NULL

BackupTypeDescription

nvarchar(60)

字符串形式的备份类型有以下几种:

DATABASE

TRANSACTION LOG

FILE OR FILEGROUP

DATABASE DIFFERENTIAL

FILE DIFFERENTIAL PARTIAL

PARTIAL DIFFERENTIAL

字符串形式的备份类型有以下几种:

NORMAL

DIFFERENTIAL

INCREMENTAL

DAILY

BackupSetGUID

uniqueidentifier NULL

备份集的唯一标识号,可以根据此标识号在介质上标识备份集。

NULL

CompressedBackupSize

bigint

备份集的字节计数。对于未压缩的备份,该值与 BackupSize 相同。

若要计算压缩率,请使用 CompressedBackupSizeBackupSize

msdb 升级期间,该值设置为与 BackupSize 列的值匹配的值。

NULL

注意注意

如果为备份集指定了密码,则 RESTORE HEADERONL 只显示其密码与命令中指定的 PASSWORD 选项相匹配的备份集的完整信息。RESTORE HEADERONLY 还显示没有密码保护的备份集的完整信息。介质上其他受密码保护的备份集的 BackupName 列将被设为 '***Password Protected***',而剩下的所有列将为 NULL。

注释

客户端可以使用 RESTORE HEADERONLY 检索特殊备份设备上的所有备份的所有备份标头信息。对于备份设备上的每个备份,服务器都会将标头信息作为一行发送。

权限

从 SQL Server 2008 开始,获取有关备份集或备份设备的信息需要具有 CREATE DATABASE 权限。有关详细信息,请参阅 GRANT 数据库权限 (Transact-SQL)

在备份时,可以根据需要为介质集、备份集或这两者指定密码。如果已经在介质集或备份集上定义了密码,则必须在 RESTORE 语句中指定正确的密码。这些密码可防止未经授权的用户使用 Microsoft SQL Server 工具执行还原操作和向介质追加备份集。但是,密码不会阻止使用 BACKUP 语句的 FORMAT 选项覆盖介质。

安全说明安全说明

此密码提供的安全性较低。它旨在防止经过授权的用户或未经授权的用户使用 SQL Server 工具执行不正确的还原操作。但是不能防止通过其他方式或通过替换密码来读取备份数据。后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。保护备份的最佳做法是将备份磁带存储在安全的位置,或者备份到由适当的访问控制列表 (ACL) 保护的磁盘文件。ACL 应设置在创建备份的根目录下。

示例

以下示例返回磁盘文件 C:\AdventureWorks2008R2-FullBackup.bak 标头中的信息。

RESTORE HEADERONLY 
FROM DISK = N'C:\AdventureWorks2008R2-FullBackup.bak' 
WITH NOUNLOAD;
GO