MS2000 差异备份 还原

 --查询文件是否存在
CREATE TABLE #tmp ([File Exists] BIT, [File is a Directory] BIT, [Parent Directory Exists] BIT)
INSERT INTO #tmp ([File Exists], [File is a Directory], [Parent Directory Exists])
EXEC master.dbo.xp_fileexist 'D:\Test.bak'
SELECT * FROM #tmp
DROP TABLE #tmp

--完整备份数据库

BACKUP DATABASE MyBakTest TO DISK='D:\Test.bak' WITH FORMAT

--对tb表插入第一条记录

INSERT INTO tb_user(uname) VALUES('第一1次差异备份')

--第一次差异备份

BACKUP DATABASE MyBakTest TO DISK='D:\Test_One_Dif.bak' WITH FORMAT,DIFFERENTIAL

--对tb表插入第二条记录

INSERT INTO tb_user(uname) VALUES('第二3次差异备份')

--第二次差异备份

BACKUP DATABASE MyBakTest TO DISK='D:\Test_Two_Dif.bak' WITH FORMAT,DIFFERENTIAL

--OK.现在直接还原.完整备份+第二次差异备份.看看第二条记录在不在.

GO

--完整备份还原
RESTORE DATABASE MyBackTest2 FROM DISK='D:\Test.bak' WITH REPLACE,NORECOVERY

RESTORE DATABASE MyBackTest2 FROM DISK='D:\Test_one_Dif.bak' WITH RECOVERY

--第二次差异备份还原
RESTORE DATABASE MyBackTest2 FROM DISK='D:\Test_Two_Dif.bak' WITH RECOVERY
 
--若存储位置有变换则需要更改存储位置,使用restore filelistonly 查询逻辑名
restore filelistonly from disk='F:\DBBak\VNetBilling_db_201112060230.BAK'
--使用 Move 更改存储位置并还原
RESTORE DATABASE SCVNetBillings FROM DISK='F:\DBBak\VNetBilling_db_201112060230.BAK' WITH REPLACE,NORECOVERY,
move 'vnet_billing_data001_2'     to 'F:\DBBak\VNET_Billing\data\vnet_dbdata2_01.mdf',
move 'vnet_billing_data002_16'     to 'F:\DBBak\VNET_Billing\data\vnet_dbdata16_01.ndf'
...
原文地址:https://www.cnblogs.com/lidingwen/p/2282506.html