データベースのバックアップとリカバリ

「データベースシステム入門」実験報告

日付

 

トピック:データベースのバックアップとリカバリ

名前

 

学生証

 

 

ラボ環境:

SQL Server2014バージョンがインストールされているコンピューター

 

管理者アカウントでSQLServer Management Studioにログインします。元のデータベースstuに基づいて、ManagementStuioインターフェイスまたはT-SQLステートメントを使用して次の操作を実行してください。

  1. データベースstuの完全なデータベースバックアップセットstu.bakを作成します。ターゲットディスクはD:\ user \ stu.bakです。

T-SQLステートメントは

BACKUP DATABASEのSTU

TO DISK = 'D:\ユーザー\ stu.bak'

 

 

 

  1. データベースstuに新しいデータテーブルceshiを作成し、コンテンツをカスタマイズしてから、データベースstuの差分バックアップを作成します。

まず、新しいデータテーブルceshiを作成します

T-sqlステートメント

テーブルceshiを作成する

((

    Sno char 9 not null キー

    Sname char 6 nullではなく

    Ssex char 2 null、

    Sage int null、

    Sdept varchar(8) null

)

对数据库stu创建差异备份

T-sql语句:

backup database stu

To disk='D:\user\stu_differential.bak' with differential

结果为:

  1. 向数据库stu的数据表ceshi插入部分记录,然后针对数据库stu创建事务日志备份;

使用以下语句向数据表ceshi中插入部分记录

先插入值:

INSERT into ceshi(Sno,Sname,SSex,Sage,Sdept)

SELECT '200515001','赵菁菁','女',23,'CS' UNION

SELECT '200515002','李勇','男',20,'CS' UNION

SELECT '200515003','张力','男',20,'CS' UNION

SELECT '200515004','张衡' ,'男',18,'IS' UNION

SELECT '200515005','张向东' ,'男',20,'IS' UNION

SELECT '200515006','张向丽' ,'女',20,'IS' UNION

SELECT '200515007','王芳' ,'女',20,'CS' UNION

SELECT '200515008','王民生' ,'男',25,'MA' UNION

SELECT '200515025','朱小鸥' ,'女',30,'WM'

对数据库stu创建事务日志备份

backup log stu

to disk='D:\user\stu_log.bak'

结果为:

  1. 根据需要,将数据库恢复到数据库stu的最初状态;

T-SQL语句:

use master

restore database stu

from disk='D:\user\stu.bak'

with replace,norecovery

执行结果为

  1. 根据需要,将数据库恢复到创建数据表ceshi后的状态;

sql语句:

use master restore database stu

from disk='D:\user\stu.bak'

with replace,norecovery

go

restore database stu

from disk='D:\user\stu_differential.bak'

结果为:

  1. 根据需要,将数据库恢复到在ceshi表插入记录后的状态;

SQL语句的实现:

use master restore database stu

from disk='D:\user\stu.bak'

with replace,norecovery

go

restore log stu

from disk='D:\user\stu_log.bak'

结果为:

Ceshi表中的数据已经还原了回来

  1. 针对现有数据库stu创建完全文件和文件组备份集stu_file,目标磁盘为D:\ user \ stu_file.bak;

在现有数据库stu上创建一个文件db2

 

 

 

 

 

 

 

使用SQL语句执行:

backup database stu

file='stu',

file='db2',

filegroup='primary'

To disk='D:\user\stu_file.bak'

即可创建一个文件组备份集stu_file

执行结果:

  1. 在当前数据库中新建数据表ceshi2,然后针对数据库stu创建差异文件和文件组备份;

使用SQL语句执行:

use stu

create table ceshi2(testID int,testName varchar(10))

GO

backup database stu

file='stu',

file='db2',

filegroup='primary'

To disk='D:\user\stu_file_differential.bak'

with differential

执行结果为:

  1. 向数据库stu的数据表ceshi2插入部分记录,然后针对数据库stu创建事务日志文件和文件组备份;

编辑ceshi2数据表,手动其添加几条数据

然后使用语句为stu创建事务日志文件和文件组备份

backup log stu

TO disk='D:\user\stu_file_log.bak'

执行结果:

  1. 根据需要,将数据库以文件和文件组方式恢复到创建数据表ceshi2后的状态;

先还原到初始状态

use master

restore database stu

file='stu',

file='db2',

filegroup='primary'

from disk='D:\user\stu_file.bak'

with replace

Go

在还原到差异备份

use master

restore database stu

file='stu',

file='db2',

filegroup='primary'

from disk='D:\user\stu_file.bak'

with replace,norecovery

restore database stu

file='stu',

file='db2',

filegroup='primary'

from disk='D:\user\stu_file_differential.bak'

 

执行结果:

 

 

 

 

 

 

  1. 根据需要,将数据库以文件和文件组方式恢复到数据表ceshi2插入记录后的状态;

使用以下sql语句

use master

restore database stu

file='stu',

file='db2',

filegroup='primary'

from disk='D:\user\stu_file.bak'

with replace,norecovery

Go

restore log stu

from disk='D:\user\stu_file_log.bak'

执行结果:

 

 

 

 

原来插入的数据也还原了回来

  1. 为数据库stu设置一个备份计划1(建议使用数据库维护计划向导,【服务器】→【管理】→【维护计划】→【维护计划向导】) ;

打开维护计划向导

启用 SQL Server 代理扩展存储

sp_configure 'show advanced options', 1; 

GO 

RECONFIGURE; 

GO 

sp_configure 'Agent XPs', 1; 

GO 

RECONFIGURE 

GO 

然后

 

 

 

 

13为数据库stu设置一个备份计划2,并比较各自优缺点。

 

根据维护计划向导,可以设置一个备份计划2,其使用的是事务日志备份

 

 

经比较可知,备份计划1使用的是完全备份,其完全备份了整个的数据库内容,占据的空间比较大,因此大型的数据库不适合完全的备份

备份计划2使用的是事务日志备份,它是相对于前一次备份进行的差异性备份,占据的空间较小。

 

 

出现的问题及解决方案:

本次实验,由于在课程中还未讲到,很多操作不是很熟悉,通过网上寻找解决方案,寻找解决答案,又遇到一些错误,根据错误提示,在官网或CSDN等网站寻找解决方案。

 

 

教师评语及得分:

 

 

 

             

 

 

おすすめ

転載: blog.csdn.net/weixin_48450741/article/details/112464330