xml地图|网站地图|网站标签 [设为首页] [加入收藏]
当前位置: www8029com > 澳门新葡8522最新网站 > 正文

澳门新葡8522最新网站:数据库的恢复

时间:2019-08-04 15:45来源:澳门新葡8522最新网站
数据库恢复是和数据库备份相对应的操作,它是将数据库备份重新加载到系统中的过程。数据库恢复可以创建备份完成时数据库中存在的相关文件,但是备份以后的所有数据库修改都将

数据库恢复是和数据库备份相对应的操作,它是将数据库备份重新加载到系统中的过程。数据库恢复可以创建备份完成时数据库中存在的相关文件,但是备份以后的所有数据库修改都将丢失。

--完整还原

   SQL Server进行数据库恢复时,系统将自动进行安全性检查,以防止误操作而使用了不完整的信息或其他的数据备份覆盖现有的数据库。当出现以下几种情况时,系统将不能恢复数据库。

RESTORE DATABASE demoData
   FROM DISK=N'D:BackupdemoData.bak';  

  (1)还原操作中的数据库名称与备份集中记录的数据库名称不匹配。

RESTORE DATABASE { database_name | @database_name_var }
[ FROM <backup_device> [ ,...n ] ]
[ WITH
{
[       RECOVERY --指定还原操作将所有未提交的事务回滚,并使数据库可用;如果后续需要从差异备份和事务日志备份继续还原操作,那么必须使用 NORECOVERY选项;RECOVERY 选项用于还原操作的最后一个Restore命令中。

  (2)需要通过还原操作自动创建一个或多个文件,但已有同名的文件存在。

        | NORECOVERY --指定还原操作不回滚未提交的事务,后续需要从差异备份或事务日志备份继续还原操作,在还原过程的最后一个Restore命令之前,使用NoRecovery选项。

  (3)还原操作中命名的数据库已在服务器上,但是与数据库备份中包含的数据库不是同一个数据库,例如数据库名称虽相同,但是数据库的创建方式不同。

        | 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 ]
[;]

根据保存数据的需要和对存储介质使用的考虑,SQL Server提供了3种数据库恢复模型:简单恢复、完全恢复、大容量日志记录恢复。

--将特定页面还原到数据库(页面还原) 
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 ] ]
[;]

1.简单恢复模型

--将事务日志还原到数据库(事务日志还原)
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

 简单恢复模型的有点是允许高性能大容量复制操作,以及可以回收日志空间。但是必须重组最新的数据库或者差异备份后的更改。

 

2.完全恢复模型

 

  完全恢复模型使用数据库备份和事务日志备份提供将数据库恢复到故障点或特定即时点的能力。为保证这种恢复程度,包括大容量操作(如SELECT INTO、CREATE INDEX和大容量装载数据)在内的所有操作都将完整地记入日志。

<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 创建的备份称为“部分备份”。在简单恢复模式下,只允许对只读文件组执行文件组备份。还原的数据备份类型:数据库备份、部分备份或文件备份。对于数据库备份或部分备份,日志备份序列必须从数据库备份或部分备份的结尾处开始延续。对于一组文件备份,日志备份序列必须从整组文件备份的开头开始延续。

3.大容量日志记录恢复模型

 }

  大容量日志记录恢复模型为某些大规模或大容量复制操作提供最佳性能和最少日志使用空间。在这种模型中,大容量复制操作的数据丢失程度要比完全恢复模型严重,因为在这种模型下,只记录操作的最小日志,无法逐个控制这些操作。它只允许数据库恢复到事务日志备份的结尾处,不支持即时点恢复。

<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 }

 不同的hi付模型针对不同的性能、磁盘和磁带空间以及保护数据丢失的需要。恢复模型决定总体备份策略,包括可以使用的备份类型,即选择一种恢复模型,可以确定如何备份数据以及能承受何种程度的数据丢失,由此确定了数据的恢复过程。

--媒体设置选项 
| 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 }

  需要查看的信息通常包括:备份集内的数据和日志文件、备份首部信息、介质首部信息。可以使用SQL Server管理平台和Transact-SQL语句查看这些信息。

--检测选项 
| STATS [ = percentage ]

 1.使用SQL Server管理平台查看备份信息

--磁带选项 
| { REWIND | NOREWIND }
| { UNLOAD | NOUNLOAD }

  使用SQL Server查看所有备份介质属性的操作步骤如下:

<replication_WITH_option>::=
| KEEP_REPLICATION

  (1) 打开SQL Server管理平台,在对象资源管理器中,展开结点”服务器树“→”服务器对象“→”备份设备“,右击某个具体备份设备名称,在弹出的快捷菜单上选择”属性“命令,打开”备份设备“属性窗口。

<change_data_capture_WITH_option>::=
| KEEP_CDC

(2)在”备份设备“属性窗口选择”媒体内容“选择卡,打开的窗口,在列表框中列出所选备份媒体的有关信息。

<FILESTREAM_WITH_option>::=
| FILESTREAM ( DIRECTORY_NAME = directory_name )

2.使用Transact-SQL语句查看备份信息

<service_broker_WITH_options>::=
| ENABLE_BROKER
| ERROR_BROKER_CONVERSATIONS
| NEW_BROKER

 RESTORE HEADERONLY语句的格式为:

<point_in_time_WITH_options—RESTORE_DATABASE>::=
| {
STOPAT = { 'datetime'| @datetime_var }
| STOPATMARK = 'lsn:lsn_number'
[ AFTER 'datetime']
| STOPBEFOREMARK = 'lsn:lsn_number'
[ AFTER 'datetime']
}

RESTORE HEADERONLY

<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']
}

FROM <backpi_device>

[WITH {NOUNLOAD|UNLOAD}

[[,]FILE =file_number]

[[,]PASSWORD={password|@password_var}]

[[,]MEDIAPASSWORD={mediapassword|@mediapassword_var}]

<backup_device>::={

{'logical_backup_device_name'|@logical_backup_device_name_var}

|{DISK|TAPE}={'physical_backup_device_name'|@physical_backup_name_var}

}]

各选项含义如下:

(1)<backup_device>:指定备份操作时要使用的逻辑或物理设备。

(2)FILE=file_number:标识要处理的备份集。

(3)PASSWORD={password|@password_var}:备份集密码。

(4)MEDIAPASSWORD={mediapassword|@mediapassword_var}:媒体集密码。

RESTORE HEADERONLY 语句返回的结果集包括:备份集名称、备份集类型、备份集的有效时间、服务器名称、数据库名称、备份大小等信息。

举例:使用Transact-SQL语句得到back4数据库备份的信息。

RESTORE HEADERONLY FROM back4

三。恢复数据库

1.使用SQL Server管理平台恢复数据库

其操作步骤如下:

(1)在SQL Server管理平台的”对象资源管理器“中,展开数据库文件夹,右击要进行还原的数据库图标,这里以Sales数据库为例,从弹出的快捷菜单中选择”任务/还原/数据库“选项,打开”还原数据库“窗口。

(2)在”还原数据库“窗口的”常规“选项卡中,”目标数据库“下拉列表框用于选择要还原的数据库;”目标时间点“文本框用于设置还原时间点,可以保留默认值,也可以通过单击旁边的浏览按钮打开”时点还原“对话框,选择具体的日期和时间,对于完整数据库备份恢复,只能恢复到完全备份完成的时间点;”还原的源“区域中的”源数据库“下拉列表框用于选择要还原的备份的数据库存的名称;”源设备“文本框用于设置还原的备份设备的位置;”选择用于还原的备份集“网格用于选择还原的备份。

(3)选择”选项“项。在其中进行还原选项和恢复状态的设置。其中,”覆盖现有数据库“复选框被选中表示恢复操作覆盖所有现有数据库及相关文件;”保留复制设置“复选框被选中表示将已发布的数据库还原到创建该数据库的服务器之外的服务器时,保留复制设置;”还原每个备份之前进行提示“复选框被选中表示在还原每个备份设置之前要求用户确认;”限制访问还原的数据库“复选框被选中表示还原后的数据库仅供db_owner、dbreator或sysadmin的成员使用;”将数据库文件还原为“区域可选择数据文件和日志文件的路径。

(4)设置完成后,单击”确定“按钮,即可还原数据库,并在还原成功后出现消息对话框,要求用户确认还原已成功完成。

  差异备份、日志备份、文件和文件组备份的还原操作与完整数据库备份的还原操作过程相似。

2.使用Transact-SQL语句RESTORE恢复数据库

与BACKUP 语句 相对应,RESTORE语句可以恢复整个数据库备份、数据文件及文件组备份、事务日志备份。

  RESTORE语句的语法格式为:

RESTORE {DATABASE|LOG}

{database_name|@database_name_var}

<file_or_filegroup>[,...n]

[FROM <backup_device>[,...n]]

[WITH

[RESTRICTED_USER]

[[,]FILE={file_number|@file_number}]

[[,]PASSWORD={password|@password_var}]

[[,]MEDIANAME={media_name|@media_name_var}]

[[,]mediapassword={mediapassword|@mediapassword_var}]

[[,]MOVE'logical_file_name'TO'operating_system_file_name'][,...n]

[[,]KEEP_REPLICATION]

[[,]{NORECOVERY|RECOVERY|STANDBY=undo_file_name}]

[[,]REPLACE]

[[,]RESTART]

[[,]STATS[=percentage]]

[[,]STOPAT={date_time|@date_time_var}

|[,]STOPATMARK='mark_name'[AFTER datetime]

|[,]STOPBEFOREMARK='mark_name'[AFTER datetime]]

]

各选项含义如下:

(1)DATABASE:指定要恢复备份的数据库。

(2)LOG:指定对数据库恢复事务日志备份。SQL Server检查已备份的事务日志,以确保按正确的序列将事务恢复到正确的数据库。

(3){database_name|@database_name_var}:将日志或整个数据库要还原到的数据库。

(4)<file_or_filegroup>:指定包括在要恢复的数据库中的逻辑文件或文件组的名称,可以指定多个文件或文件组。

(5)FROM<backup_device>:指定从中恢复备份的备份设备,其定义与BACKUP语句相同。

(6)RESTRICTED_USER:限制只有db_owner、db_creator或sysadmin角色的成员才能访问最近恢复的数据库。该选项与RECOVERY一起使用。

(7)FILE={file_number|@file_number}:标识要恢复的备份集。

(8)PASSWORD={password|@password_var}:提供备份集密码。

(9)MEDIAPASSWORD={mediapassword|@mediapassword_var}:提供媒体的密码。

(10)MOVE'logical_file_name'TO'operating_system_file_name':指定将给定的logical_file_name移到operating_system_file参数指定的位置。默认情况下,logical_file_name将恢复到其原始位置。

(11)NORECOVERY:指示在执行恢复操作后不回退任何未提交事务。

(12)RECOVERY:指示在执行恢复操作后回退未提交的事务,为默认值。

(13)STANDBY=undo_file_name:指定撤销文件名从而可以取消恢复。

(14)REPLACE:表示如果已经存在具有相同名称的数据库时,则删除已有的数据库,创建指定的数据库。

(15)STOPAT={date_time|@date_time_var}:指定只恢复数据库在指定的日期和时间之间的内容。该选项只与RESTORE LOG 一起使用。

(16)STOPATMARK='mark_name'[AFTER datetime]:表示恢复到指定的标记,包括包含该标记的事务。该选项只与RESTORE LOG一起使用。

(17)STOPBEFOREMARK='mark_name'[AFTER datetime]:表示恢复到指定的标记,但不包括包含该标记的事务。该选项只与RESTORE LOG一起使用。

举例:从一个已存在的备份媒体back1恢复整个数据库Sales.

RESTORE DATABASE Sales

FROM back1

举例:从磁盘上的备份文件D:Sales_back.bak中恢复数据库Sales.

RESTORE DATABASE Sales FROM DISK='D:Sales_back.bak'

举例:将一个数据库备份和一个事务日志进行数据库的恢复操作。

RESTORE DATABASE Sales

FROM back1 WITH NORECOVERY

RESTORE LOG Sales

FROM back1 WITH NORECOVERY

举例:恢复数据库Sales中指定数据文件Sales_data1.

RESTORE DATABASE Sales

FILE='Sales_data1'

FROM back4

WITH NORECOVERY

编辑:澳门新葡8522最新网站 本文来源:澳门新葡8522最新网站:数据库的恢复

关键词: www8029com