澳门金沙vip文件及文件组备份与还原示例.sql

–创建测试数据库 CREATE DATABASE Db GO –对数据库进行备份 BACKUP
DATABASE Db TO DISK=’c:\db.bak’ WITH FORMAT GO –创建测试表 CREATE
TABLE Db.dbo.TB_test(ID int) –延时1秒钟,再进行后面的操作(这是由于SQL
Server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点的操作失败)
WAITFOR DELAY ’00:00:01′ GO –假设我们现在误操作删除了 Db.dbo.TB_test
这个表 DROP TABLE Db.dbo.TB_test –保存删除表的时间 SELECT
dt=GETDATE() INTO # GO –在删除操作后,发现不应该删除表 Db.dbo.TB_test
–下面演示了如何恢复这个误删除的表 Db.dbo.TB_test
–首先,备份事务日志(使用事务日志才能还原到指定的时间点) BACKUP LOG Db TO
DISK=’c:\db_log.bak’ WITH FORMAT GO
–接下来,我们要先还原完全备份(还原日志必须在还原完全备份的基础上进行)
RESTORE DATABASE Db FROM DISK=’c:\db.bak’ WITH REPLACE,NORECOVERY GO
–将事务日志还原到删除操作前 –*/ –测试成功 GO
–最后删除我们做的测试环境 DROP DATABASE Db DROP TABLE #

–以下代码简单地演示了如何进行文件组的备份及还原(在还原时,模拟了丢失第二次文件组备份文件的情况)。
–创建测试数据库
CREATE DATABASE db
ON PRIMARY(
    NAME=’db_data’,
    FILENAME= ‘c:\db_data.mdf’),
FILEGROUP db_fg1(
    NAME = ‘db_fg1_data’,
    FILENAME = ‘c:\db_fg1_data.ndf’),
FILEGROUP db_fg2(
    NAME = ‘db_fg2_data’,
    FILENAME = ‘c:\db_fg2_data.ndf’)
LOG ON(
    NAME=’db_log’,
    FILENAME =’c:\db.ldf’)
GO

–在文件组db_fg1上创建表,并单独创建该文件组的备份
CREATE TABLE db.dbo.tb(id int) ON db_fg1
BACKUP DATABASE db FILEGROUP=’db_fg1′ TO DISK=’c:\db_fg1.bak’ WITH
FORMAT
GO

在其他文件组上创建表
CREATE TABLE db.dbo.ta(id int) ON [PRIMARY]
CREATE TABLE db.dbo.tc(id int) ON db_fg2
INSERT db.dbo.tb SELECT id FROM sysobjects
–备份每个文件组,并且备份事务日志
BACKUP DATABASE db FILEGROUP=’PRIMARY’ TO DISK=’c:\db_primary.bak’
WITH FORMAT
BACKUP DATABASE db FILEGROUP=’db_fg1′ TO DISK=’c:\db_fg1_new.bak’
WITH FORMAT
BACKUP DATABASE db FILEGROUP=’db_fg2′ TO DISK=’c:\db_fg2.bak’ WITH
FORMAT
BACKUP LOG db TO DISK=’c:\db_log.bak’ WITH FORMAT
GO