012_简单恢复模式
012_简单恢复模式
--将恢复模式改为简单恢复模式************************************************************************
ALTER DATABASE test SET recovery SIMPLE
--创建备份介质************************************************************************
--创建全备份介质
EXEC sp_addumpdevice
@devtype=N'disk',@logicalname=N'test_back',@physicalname='E:\sql_2008\test_backup\test_full_01.bak'
--创建差异备份介质(创建两个介质,以示区别,后文将会把两个差异备份备份到一个介质)
EXEC sp_addumpdevice
@devtype=N'disk',@logicalname=N'test_back_diff_01',@physicalname='E:\sql_2008\test_backup\test_diff_01.bak'
EXEC sp_addumpdevice
@devtype=N'disk',@logicalname=N'test_back_diff_02',@physicalname='E:\sql_2008\test_backup\test_diff_02.bak'
--备份数据库************************************************************************
--备份完整数据库
backup database test to DISK=N'E:\sql_2008\test_backup\test_full_01.bak' WITH init
--或者这样写
--RESTORE DATABASE test to test_back WITH init
--修改数据库
CREATE TABLE test_simple_01(id int)
--差异备份(此时库中会有test_simple_01表)
backup database test to DISK=N'E:\sql_2008\test_backup\test_diff_01.bak' WITH differential
--修改数据库
CREATE TABLE test_simple_02(id int)
--差异备份(此时库中会有test_simple_02表)
backup database test to DISK=N'E:\sql_2008\test_backup\test_diff_01.bak' WITH differential
--修改数据库
CREATE TABLE test_simple_03(id int)
--差异备份(此时库中会有test_simple_03表)
backup database test to DISK=N'E:\sql_2008\test_backup\test_diff_02.bak' WITH differential
--还原数据库************************************************************************
--切换到master库
USE master
--还原到初始的完整备份时(此时没有新建的3个表)
RESTORE DATABASE test FROM DISK=N'E:\sql_2008\test_backup\test_full_01.bak' WITH NORECOVERY
--或者这样写
--RESTORE DATABASE test FROM test_back WITH norecovery
--还原到第一个差异备份(此时有test_simple_01表)
RESTORE DATABASE test FROM test_back_diff_01 WITH FILE =1,NORECOVERY
--还原到第二个差异备份(此时有test_simple_01表,test_simple_02表)
RESTORE DATABASE test FROM test_back_diff_01 WITH FILE =2,NORECOVERY
--还原到第三个差异备份(此时有test_simple_01表,test_simple_02表,test_simple_03表)
RESTORE DATABASE test FROM test_back_diff_02 WITH NORECOVERY
--结束此次还原(这个 with recovery 一定要在末尾执行)
RESTORE DATABASE test WITH recovery
--注意************************************************************************
--1.创建差异备份(省略参数)
EXEC sp_addumpdevice 'disk','test_back','E:\sql_2008\test_backup\test_01.bak'
--2.删除备份介质
EXEC sp_dropdevice test_back
--3.备份介质信息查询
SELECT * FROM sys.backup_devices
SELECT * FROM sys.sysdevices
--3.将数据库状态改为在线或下线
ALTER DATABASE test SET ONLINE
ALTER DATABASE test SET OFFLINE
--4.查询进程,锁
SELECT * FROM sys.sysprocesses
SELECT * FROM sys.databases
EXEC sp_who
EXEC sp_lock
KILL 53
--5.查询备份文件的相关信息
RESTORE HEADERONLY FROM DISK=N'E:\sql_2008\test_backup\test_01.bak'
RESTORE FILELISTONLY FROM DISK=N'E:\sql_2008\test_backup\test_01.bak'
RESTORE LABELONLY FROM DISK=N'E:\sql_2008\test_backup\test_01.bak'
--norecovery解释
--NORECOVERY
--指示还原操作不回滚任何未提交的事务。如果稍后必须应用另一个事务日志,则应指定 NORECOVERY 或 STANDBY 选项。
--6.关于差异备份到同一文件的还原解释
--在备份的时候,message中显示文件被备份到了哪一个file中,所以在restore的时候,指定file序号就可以执行还原了。