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

时间:2021-08-23 07:22:34
  1. USE master  -- (Can’t sit in the database whilst its being restored!)  
  2. GO  
  3.  
  4. ALTER DATABASE MyDatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE  
  5. GO  
  6.  
  7. -- Restore Full Backup  
  8. RESTORE DATABASE MyDatabase  
  9.  FROM DISK = ’x:\MSSQL\BACKUP\MyBackupFilename_Full.BAK’  
  10.  WITH  
  11.    REPLACE,  
  12.    NORECOVERY,  -- Use if more T/Logs to recover  
  13. --    RECOVERY,  -- Use if NO more T/Logs to recover  
  14.    STATS = 10,  -- Show progress (every 10%)  
  15.  MOVE ’MyDatabase_Data’ TO ’x:\MSSQL\DATA\MyDatabase.mdf’,   
  16.  MOVE ’MyDatabase_Log’ TO ’x:\MSSQL\DATA\MyDatabase.ldf’  
  17. GO  
  18.  
  19. -- Optional restore Differential Backup  
  20. RESTORE DATABASE MyDatabase  
  21.  FROM DISK = ’x:\MSSQL\BACKUP\MyDatabase_Diff.BAK’  
  22.  WITH  
  23. --    RECOVERY  -- Use if NO more file to recover  
  24.    NORECOVERY  -- Use if there are T/Logs to recover  
  25. GO  
  26.  
  27. -- Optional restore Transaction Log Backup  
  28. RESTORE DATABASE MyDatabase  
  29.  FROM DISK = ’x:\MSSQL\BACKUP\MyDatabase_yyyymmdd_hhmm_Trans.BAK’  
  30.  WITH  
  31. --    RECOVERY  -- Use if NO more T/Logs to recover  
  32.    NORECOVERY  -- Use if more T/Logs to recover  
  33. GO  
  34.  
  35. -- Set the database ready for use (after all backups have been restored)  
  36. RESTORE DATABASE MyDatabase RECOVERY  
  37. GO  
  38.  
  39. -- Rename logical names (only needed if restoring from a backup for a Different database):  
  40. ALTER DATABASE MyDatabase   
  41.    MODIFY FILE (NAME = ’OrigDatabase_Data’, NEWNAME = ’MyDatabase_data’)  
  42. GO  
  43. ALTER DATABASE MyDatabase   
  44.    MODIFY FILE (NAME = ’OrigDatabase_Log’, NEWNAME = ’MyDatabase_log’)  
  45. GO