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

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

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

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

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

如果重新创建一个数据库,可以禁止这些安全检查。

一。数据库恢复模型

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

1.简单恢复模型

简单恢复模型可以将数据库恢复到上次备份处,但是无法将数据库还原到故障点或待定的即时点。它常用于恢复最新的完整数据库备份、差异备份。

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

2.完全恢复模型

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

完全恢复模型的优点是可以恢复到任意即时点,这样数据文件的丢失和损坏不会导致工作损失,但是如果事务日志损坏,则必须重新做最新的日志备份后进行修改。

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

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

大容量日志记录恢复模型的优点是可以节省日志空间,但是如果日志损坏或者日志备份后发生了大容量操作,则必须重做自上次备份后所做的更改。

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

二。查看备份信息

由于恢复数据库与备份数据库之间往往存在较长的时间差,难以记住备份设备和备份文件及其所备份的数据库,需要对这些信息进行查看。

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

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

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

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

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

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

RESTORE HEADERONLY语句的格式为:

RESTORE HEADERONLY

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

[SQL Server]数据库的恢复的更多相关文章

  1. SQL Server数据库有三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式

    SQL Server数据库有三种恢复模式:简单恢复模式.完整恢复模式和大容量日志恢复模式: 1.Simple 简单恢复模式, Simple模式的旧称叫”Checkpoint with truncate ...

  2. SQL Server数据库的三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式(转载)

    SQL Server数据库有三种恢复模式:简单恢复模式.完整恢复模式和大容量日志恢复模式: 1.Simple 简单恢复模式, Simple模式的旧称叫”Checkpoint with truncate ...

  3. SQL Server 数据库基于备份文件的【一键还原】

    1. 备份与还原的基础说明 我们知道在DBA的日常工作中,SQL Server 数据库的恢复请求偶有发生,可能是用作数据的追踪,可也可能能是数据库的灾难恢复. 数据库常用的备份命令如下: ----完整 ...

  4. Sql Server数据库备份和恢复:原理篇

    本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...

  5. SQL Server 数据库本地备份文件通过OSS工具上阿里云(恢复还原数据库)

    SQL Server数据库上云,通过备份文件上传进行恢复. 1.通过OSS工具上传备份文件. 相关知识和操作步骤请参考: https://blog.csdn.net/weixin_35773751/a ...

  6. SQL Server 数据库分离与附加

    一.概述 SQL Server提供了“分离/附加”数据库.“备份/还原”数据库.复制数据库等多种数据库的备份和恢复方法.这里介绍一种学习中常用的“分离/附加”方法,类似于大家熟悉的“文件拷贝”方法,即 ...

  7. SQL SERVER 数据库备份的三种策略及语句

    1.全量数据备份    备份整个数据库,恢复时恢复所有.优点是简单,缺点是数据量太大,非常耗时 全数据库备份因为容易实施,被许多系统优先采用.在一天或一周中预定的时间进行全数据库备份使你不用动什么脑筋 ...

  8. 5、SQL Server数据库、T-SQL

    SQL Server数据库基础 一.安装SQL Server数据库 setup.exe->安装->全新SQL Server独立安装或向现有安装添加功能->输入序列号->下一步- ...

  9. 人人都是 DBA(V)SQL Server 数据库文件

    SQL Server 数据库安装后会包含 4 个默认系统数据库:master, model, msdb, tempdb. SELECT [name] ,database_id ,suser_sname ...

随机推荐

  1. mongodb-手写mongoclient加入到springmvc中

    由于一个项目使用的是springmvc3.x版本, mongodb使用的为3.x版本, 所以springmvc继承的mongodb-data并不可用, 只能自己手写一个mongoclient并加入到s ...

  2. 使用redis的发布订阅模式实现消息队列

    配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://w ...

  3. java中的复制数组arraycopy()

    System.arraycopy();//静态方法,在System类中定义,注意copy首字母是小写的 例子: int[] a = {1,2,3,4,5}; int[] b = {9,8,7,6}; ...

  4. java将System.out.println的输出导出到文件中

    直接看代码 public static void saveStreamToFile(String savePath,String input){ try { //savePath like c:/lo ...

  5. struct in_addr 结构体

    struct in_addr 结构体: struct in_addr { in_addr_t s_addr; }; 表示一个32位的IPv4地址. in_addr_t一般为32位的unsigned i ...

  6. sublime text 2+sublimeClang

    sublimeClang 是github上面的开源项目,可用于C/C++的自动补全 github:https://github.com/quarnster/SublimeClang 配置sublime ...

  7. Java 注解实例

    package com.annotation; import java.lang.annotation.Retention; import java.lang.annotation.Target; i ...

  8. js / jquery 获取和设置 FCK Editor 的值

    开发中遇到 通过 $("#content").val(); 或者 document.getElementById("content"); 并不能获取到 id 为 ...

  9. grafana安装

    1 wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.2.4-1.x86_64.rpm2 sudo ...

  10. C#基础知识回顾--BackgroundWorker介绍

    简介 BackgroundWorker是.net里用来执行多线程任务的控件,它允许编程者在一个单独的线程上执行一些操作.耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 始终 ...