什么是MSSQL仅还原文件列表以及何时使用它
MSSQL仅还原文件列表是其中之一数据库RESTORE 语句,用于列出与特定 SQL Server 数据库备份相关的所有文件及其信息。
执行 MSSQL仅还原文件列表选项返回一个结果集,其中包含备份集中包含的数据库和日志文件的列表,以及相应的数据值。大多数信息无法从 SSMS GUI 获取。
因此,使用 MSSQL仅还原文件列表选项SQL Server 数据库还原tasks可以让我们清楚的了解备份文件的相关信息,提高我们的工作效率。
何时使用MSSQL仅还原文件列表命令
这里我总结了几种可能需要用到它的常见情况:
- 如果你想使用 T-SQL 来将 SQL 备份恢复到新数据库在同一个或另一个 SQL Server 上,则首先需要使用 Restore Filelistonly 列出备份文件的逻辑文件名。
- 如果要在恢复之前预测数据库的大小,可以将结果集中的 Size 列表中的值(以字节为单位)相加。
- 如果你只想查看备份文件的详细信息而不恢复它,或者将它们存储在临时表中以备后用。
如何使用 MSSQL RESTORE FILELISTONLY FROM DISK 命令
启动SSMS并连接到您的实例。单击工具栏上的“新建查询”并输入以下命令:
RESTORE FILELISTONLY FROM DISK = ‘ filepath\filename.bak ‘
注意:
1. 在’filepath\backup.bak’ 中,您需要输入备份的位置和备份的文件名,后缀为.bak。例如:’D:\Backup\DAname_1.bak’
2. 如果备份设备中有多个备份,默认指定第一个备份。但您也可以使用 FILE 选项指定特定备份(执行 RESTORE HEARDEROLY 以获取位置编号)。
例如:要在 ExampleBackups 上指定第二个备份,一个SQL Server 中的逻辑备份设备:RESTORE FILELISTONLY 从 ExampleBackups WITH FILE=2

备份文件的逻辑名称将列在结果中,现在您可以使用 T-SQL WITH MOVE 命令来将 SQL 备份恢复到新数据库在同一台或另一台服务器上。
✦ 以下是结果集中一些通常需要的值:
- LogicalName:备份文件的逻辑名称。
- PhysicalName:备份文件的物理路径,也称为操作系统名称。
- “类型”:文件的类型。文件有 4 种类型:D =SQL Server 数据文件、L =SQL Server 日志文件、F = Full Text Catalog、S =FileStream、FileTable 或 In-Memory OLTP 容器。
- FileGroupName:包含该文件的文件组的名称。
- Size:文件的当前大小(以字节为单位)。您可以将 .mdf 文件和 ldf 文件的大小相加来预测数据库的大小。
- MaxSize:最大允许大小(以字节为单位)。
- FileID:文件标识符,在数据库中是唯一的。
- UniqueID:文件的全局唯一标识符。
- DifferentialBaseLSN:对于差异备份,日志序列号大于或等于 DifferentialBaseLSN 的更改包含在差异中。对于其他备份类型,该值为 NULL。
- DifferentialBaseGUID:对于差异备份,差异基的唯一标识符。对于其他备份类型,该值为 NULL。
- IsReadOnly : 1=文件是只读的。
关于MSSQL Restore Filelistonly结果集中信息的更多解释,可以参考:RESTORE 语句 – FILELISTONLY (Transact-SQL)
RESTORE 语句的其他常用参数
除了Restore Filelistonly,MSSQL Restore语句中还有3个常用的参数。
- Restore Headeronly:返回一个备份设备上所有备份集的头部信息的结果集。
- Restore Labelonly:返回备份介质信息的结果集。
- Restore Verifyonly:用于验证备份是否完整且可读。
在本节中,我将向您介绍它们的用途以及使用方法。
如何使用 MSSQL Restore Headeronly
在 MSSQL Server 中,Restore Headeronly 和 Restore Filelistonly 是恢复数据库之前应该实施的 2 个重要选项。
执行MSSQL Restore Headeronly,从返回的SQL备份集相关信息中,可以看到谁执行了备份,以及备份中的其他细节。这可以有效地帮助我们在恢复之前执行SQL Server 数据库备份验证。
例如,由于无法在较早版本上恢复较新版本的 SQL Server 数据库的备份,您可以在恢复之前使用 Restore Headeronly 查询该备份的数据库版本。
基本语法是:
RESTORE HEADERONLY FROM DISK = ‘ filepath\filename.bak ‘

✦ 以下是结果集中一些通常需要的值:
- BackupName:备份的名称。
- BackupType:备份的类型。1=数据库,2=事务日志,4=文件,5=差异数据库,6=差异文件,7=部分,8=部分差异。
- ExpirationDate:备份文件将在这个时间后过期。
- “压缩”:0=未压缩,1=压缩。
- Position:备份集在卷中的位置(与 FILE = 选项一起使用)。
- DeviceType:备份设备的类型。用于备份操作的设备对应的编号:Disk:2=Logical, 102=Physical。磁带:5=逻辑,105=物理。虚拟设备:7=逻辑,107=物理。URL:9=逻辑,109=物理。
- UserName:执行备份操作的用户名。
- ServerName:写入备份集的服务器的名称。
- DatabaseName:已备份的数据库的名称。
- DatabaseVersion:创建备份的数据库版本。更高版本的 SQL Server 数据库备份无法恢复到早期版本。
- BackupSize:备份的大小(以字节为单位)。
关于MSSQL Restore Headeronly结果集中的信息的更多解释,可以参考:RESTORE 语句 – HEADERONLY (Transact-SQL)
如何使用 MSSQL Restore Labelonly
执行 RESTORE LABELONLY 是找出备份媒体包含的内容的快速方法。
例如,如果您同时对多个位置执行备份,则这些位置构成一个系列。如果 FamilyCount 大于 1,则此备份文件有一个家族。您可以通过检查 MediaDate 和 MediaSequenceNumber 来判断它是何时创建的,或者它是否是第一个创建的。
基本语法是:
RESTORE LABELONLY FROM DISK = ‘ filepath\filename.bak ‘

✦ 以下是结果集中一些通常需要的值:
- MediaName:媒体的名称。
- MediaSetId:媒体集的唯一标识号。
- FamilyCount:媒体集中媒体家族的数量。
- MediaSequenceNumber:此媒体在媒体家族中的序列号。
- MediaDescription:媒体描述,采用自由格式文本或磁带格式媒体标签。
- SoftwareName:写入标签的备份软件的名称。
- SoftwareVendorId:编写备份的软件供应商的唯一供应商标识号。
- MediaDate:写入标签的日期和时间。
- IsCompressed:0=未压缩,1=压缩。
关于MSSQL Restore Labelonly结果集中信息的更多解释,可以参考:RESTORE 语句 – LABELONLY (Transact-SQL)
如何使用 MSSQL Restore Verifyonly
在 SQL Server 中,Restore Verifyonly 用于检查备份是否完整且可读。
完成 SQL Server 数据库备份后,您可以执行 MSSQL Restore Verifyonly 来检查每个备份的可读性。
如果返回的结果是备份集无效,则说明该备份不能用于恢复,需要重新备份。
基本语法是:
RESTORE VERIFYONLY FROM DISK = ‘filepath\filename.bak’
















