--完整还原
RESTORE DATABASE demoData FROM DISK=N'D:\Backup\demoData.bak';
RESTORE DATABASE { database_name | @database_name_var }
[ FROM <backup_device> [ ,...n ] ] [ WITH { [ RECOVERY --指定还原操作将所有未提交的事务回滚,并使数据库可用;如果后续需要从差异备份和事务日志备份继续还原操作,那么必须使用 NORECOVERY选项;RECOVERY 选项用于还原操作的最后一个Restore命令中。| NORECOVERY --指定还原操作不回滚未提交的事务,后续需要从差异备份或事务日志备份继续还原操作,在还原过程的最后一个Restore命令之前,使用NoRecovery选项。
| STANDBY =
{standby_file_name | @standby_file_name_var } --RECOVERY(默认值)表示在当前备份完成前滚后,应执行回滚 ] | , <general_WITH_options> [ ,...n ] | , <replication_WITH_option> | , <change_data_capture_WITH_option> | , <FILESTREAM_WITH_option> | , <service_broker_WITH options> | , \<point_in_time_WITH_options—RESTORE_DATABASE> } [ ,...n ] ] [;]--恢复数据库的一部分(部分还原)
RESTORE DATABASE { database_name | @database_name_var } <files_or_filegroups> [ ,...n ] [ FROM <backup_device> [ ,...n ] ] WITH PARTIAL, NORECOVERY [ , <general_WITH_options> [ ,...n ] | , \<point_in_time_WITH_options—RESTORE_DATABASE> ] [ ,...n ] [;]--将特定文件或文件组还原到数据库(文件还原)
RESTORE DATABASE { database_name | @database_name_var } <file_or_filegroup> [ ,...n ] [ FROM <backup_device> [ ,...n ] ] WITH { [ RECOVERY | NORECOVERY ] [ , <general_WITH_options> [ ,...n ] ] } [ ,...n ] [;]--将特定页面还原到数据库(页面还原)
RESTORE DATABASE { database_name | @database_name_var } PAGE = 'file:page [ ,...n ]' [ , <file_or_filegroups> ] [ ,...n ] [ FROM <backup_device> [ ,...n ] ] WITH NORECOVERY [ , <general_WITH_options> [ ,...n ] ] [;]--将事务日志还原到数据库(事务日志还原)
RESTORE LOG { database_name | @database_name_var } [ <file_or_filegroup_or_pages> [ ,...n ] ] [ FROM <backup_device> [ ,...n ] ] [ WITH { [ RECOVERY | NORECOVERY | STANDBY = {standby_file_name | @standby_file_name_var } ] | , <general_WITH_options> [ ,...n ] | , <replication_WITH_option> | , \<point_in_time_WITH_options—RESTORE_LOG> } [ ,...n ] ] [;]--将数据库还原到数据库快照捕获的时间点
RESTORE DATABASE { database_name | @database_name_var } FROM DATABASE_SNAPSHOT = database_snapshot_name
<backup_device>::= --备份设备定义
{ { logical_backup_device_name | @logical_backup_device_name_var } | { DISK | TAPE | URL } = { 'physical_backup_device_name' | @physical_backup_device_name_var } } <files_or_filegroups>::= --文件或文件组定义{ FILE = { logical_file_name_in_backup | @logical_file_name_in_backup_var } | FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var } | READ_WRITE_FILEGROUPS --通过指定READ_WRITE_FILEGROUPS 创建的备份称为“部分备份”。在简单恢复模式下,只允许对只读文件组执行文件组备份。还原的数据备份类型:数据库备份、部分备份或文件备份。对于数据库备份或部分备份,日志备份序列必须从数据库备份或部分备份的结尾处开始延续。对于一组文件备份,日志备份序列必须从整组文件备份的开头开始延续。}
<general_WITH_options> [ ,...n ]::= --普通WITH选项定义
--还原操作选项 MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ] | REPLACE --在SQL Server实例中,如果要还原的数据和现存的数据库同名,那么,指定Replace选项,SQL Server将会把已存在的同名数据库删除。如果没有指定Replace选项,SQL Server会做安全检查,不会将现存的同名数据库删除 | RESTART --在数据库还原操作中断(interrupt)时,重启还原操作,从中断处重新开始还原操作 | RESTRICTED_USER | CREDENTIAL --对新还原的数据库,限制(restrict)用户访问,只允许角色 db_owner, dbcreator 或 sysadmin 的成员的访问--备份设置选项
| FILE = { backup_set_file_number | @backup_set_file_number } | PASSWORD = { password | @password_variable }--媒体设置选项
| MEDIANAME = { media_name | @media_name_variable } | MEDIAPASSWORD = { mediapassword | @mediapassword_variable } | BLOCKSIZE = { blocksize | @blocksize_variable }--数据事务选项
| BUFFERCOUNT = { buffercount | @buffercount_variable } | MAXTRANSFERSIZE = { maxtransfersize | @maxtransfersize_variable }--错误检测选项
| { CHECKSUM | NO_CHECKSUM } --检测校验和 | { STOP_ON_ERROR | CONTINUE_AFTER_ERROR }--检测选项
| STATS [ = percentage ]--磁带选项
| { REWIND | NOREWIND } | { UNLOAD | NOUNLOAD }<replication_WITH_option>::=
| KEEP_REPLICATION<change_data_capture_WITH_option>::=
| KEEP_CDC<FILESTREAM_WITH_option>::=
| FILESTREAM ( DIRECTORY_NAME = directory_name )<service_broker_WITH_options>::=
| ENABLE_BROKER | ERROR_BROKER_CONVERSATIONS | NEW_BROKER\<point_in_time_WITH_options—RESTORE_DATABASE>::=
| { STOPAT = { 'datetime'| @datetime_var } | STOPATMARK = 'lsn:lsn_number' [ AFTER 'datetime'] | STOPBEFOREMARK = 'lsn:lsn_number' [ AFTER 'datetime'] }\<point_in_time_WITH_options—RESTORE_LOG>::=
| { STOPAT = { 'datetime'| @datetime_var } | STOPATMARK = { 'mark_name' | 'lsn:lsn_number' } [ AFTER 'datetime'] | STOPBEFOREMARK = { 'mark_name' | 'lsn:lsn_number' } [ AFTER 'datetime'] }