欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

如何恢复数据库备份到一个已存在的正在使用的数据库上

程序员文章站 2023-01-23 10:11:55
use master  -- (can’t sit in the database...
use master  -- (can’t sit in the database whilst its being restored!)
go

alter database mydatabase set single_user with rollback immediate
go

-- restore full backup
restore database mydatabase
 from disk = ’x:\mssql\backup\mybackupfilename_full.bak’
 with
   replace,
   norecovery,  -- use if more t/logs to recover
--    recovery,  -- use if no more t/logs to recover
   stats = 10,  -- show progress (every 10%)
 move ’mydatabase_data’ to ’x:\mssql\data\mydatabase.mdf’, 
 move ’mydatabase_log’ to ’x:\mssql\data\mydatabase.ldf’
go

-- optional restore differential backup
restore database mydatabase
 from disk = ’x:\mssql\backup\mydatabase_diff.bak’
 with
--    recovery  -- use if no more file to recover
   norecovery  -- use if there are t/logs to recover
go

-- optional restore transaction log backup
restore database mydatabase
 from disk = ’x:\mssql\backup\mydatabase_yyyymmdd_hhmm_trans.bak’
 with
--    recovery  -- use if no more t/logs to recover
   norecovery  -- use if more t/logs to recover
go

-- set the database ready for use (after all backups have been restored)
restore database mydatabase recovery
go

-- rename logical names (only needed if restoring from a backup for a different database):
alter database mydatabase 
   modify file (name = ’origdatabase_data’, newname = ’mydatabase_data’)
go
alter database mydatabase 
   modify file (name = ’origdatabase_log’, newname = ’mydatabase_log’)
go