最近,当我遇到用于还原数据库的脚本时,我对为什么我们必须使用“ FILE = 1 ” 表示怀疑。没有该语句,我们不能还原数据库吗?基本上,它的用途是什么?
最近,当我遇到用于还原数据库的脚本时,我对为什么我们必须使用“ FILE = 1 ” 表示怀疑。没有该语句,我们不能还原数据库吗?基本上,它的用途是什么?
Answers:
您可以在一个备份文件(即设备)中保存多个备份。FILE
当文件中有多个选项可供选择时,该子句允许您访问特定的备份操作.bak
。
有关RESTORE命令的各种选项的更多信息,请参见以下MSDN文档中的RESTORE Arguments。
如果查看“ 备份集选项”部分,则会发现:
FILE = { backup_set_file_number | @ backup_set_file_number }
标识要还原的备份集。例如,backup_set_file_number为1表示备份介质上的第一个备份集,backup_set_file_number为2表示第二个备份集。您可以使用RESTORE HEADERONLY语句获取备份集的backup_set_file_number。
如果未指定,则默认值为1,“ RESTORE HEADERONLY”除外,在这种情况下,将处理媒体集中的所有备份集。有关详细信息,请参阅本主题后面的“指定备份集”。
重要说明:
此FILE选项与用于指定数据库文件的FILE选项无关,FILE = { logical_file_name_in_backup | @ logical_file_name_in_backup_var }。
是的,无论如何,您都应该可以不使用FILE = 1
as作为1
默认值进行还原。而且,如果备份文件中只有一个备份集,那么它就不会造成问题。
下面是一个帮助说明何时使用该FILE
选项的示例,它是RESTORE命令MSDN页面(上面链接)中的示例B。它显示了从单个备份文件执行两次还原:第一个RESTORE
是FULL备份,第二个RESTORE
是DIFFerential备份。
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE = 6
NORECOVERY;
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
WITH FILE = 9
RECOVERY;