RESTORE 语句 - VERIFYONLY (Transact-SQL)

适用于:SQL ServerAzure SQL 托管实例

验证备份但不还原备份,检查备份集是否完整以及整个备份是否可读。 但是,RESTORE VERIFYONLY 不尝试验证备份卷中的数据结构。 在 Microsoft SQL Server 中,RESTORE VERIFYONLY 得到了增强以对数据进行附加检查,从而提高检测到错误的可能性。 其目标是尽可能接近实际的还原操作。 有关详细信息,请参阅“备注”部分。

如果备份有效,SQL Server 数据库引擎会返回一条成功消息。

注意

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

Transact-SQL 语法约定

语法

RESTORE VERIFYONLY  
FROM <backup_device> [ ,...n ]  
[ WITH    
 {  
   LOADHISTORY   
  
--Restore Operation Option  
 | MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name'   
          [ ,...n ]   
  
--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 }  
  
--Monitoring Options  
 | STATS [ = percentage ]   
  
--Tape Options  
 | { REWIND | NOREWIND }   
 | { UNLOAD | NOUNLOAD }    
 } [ ,...n ]  
]  
[;]  
  
<backup_device> ::=  
{   
   { logical_backup_device_name |  
      @logical_backup_device_name_var }  
   | { DISK | TAPE | URL } = { 'physical_backup_device_name' |  
       @physical_backup_device_name_var }   
}  
  

注意

URL 是用于为 Microsoft Azure Blob 存储指定位置和文件名的格式,从 SQL Server 2012 (11.x) SP1 CU2 开始受支持。 虽然 Microsoft Azure 存储是一种服务,不过实现与磁盘和磁带类似,从而可为所有三种设备提供一致且无缝的还原体验。

参数

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

一般备注

介质集或备份集必须包含最低限度的正确信息,才能被解释为 Microsoft Tape Format。 如果没有这些信息,RESTORE VERIFYONLY 将停止,并且指示备份格式无效。

RESTORE VERIFYONLY 执行下列检查:

  • 备份集是否完整以及所有卷是否可读。

  • 数据库页中的一些标头字段,例如页 ID(就如同要写入数据一样)。

  • 校验和(如果介质中提供的话)。

  • 目标设备中是否有足够的空间。

备注

RESTORE VERIFYONLY 不对数据库快照进行检查。 要在恢复操作之前验证数据库快照,可以运行 DBCC CHECKDB。

注意

借助快照备份,RESTORE VERIFYONLY 可确认快照是否在备份文件中指定的位置处存在。 快照备份是 SQL Server 2016 (13.x) 中的新功能。 有关快照备份的详细信息,请参阅 Azure 中数据库文件的文件快照备份

安全性

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

重要

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

权限

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

示例

以下示例从磁盘验证备份。

RESTORE VERIFYONLY FROM DISK = 'D:\AdventureWorks.bak';
GO

另请参阅

BACKUP (Transact-SQL)
介质集、介质簇和备份集 (SQL Server)
RESTORE REWINDONLY (Transact-SQL)
RESTORE (Transact-SQL)
备份历史记录和标头信息 (SQL Server)