Office中国论坛/Access中国论坛

标题: [转帖]SQL SERVER还原数据库的经典做法 [打印本页]

作者: zhuyiwen    时间: 2004-7-6 09:38
标题: [转帖]SQL SERVER还原数据库的经典做法
转自:http://www.winmag.com.cn/forum/bestview.asp?boardid=11&id=612

说明  所有的示例均假定已执行了完整数据库备份。





A. 还原完整数据库





说明  MyNwind 数据库仅供举例说明。





下例显示还原完整数据库备份。
  1. RESTORE DATABASE MyNwind

  2.    FROM MyNwind_1
复制代码
B. 还原完整数据库备份和差异备份



下例还原完整数据库备份后还原差异备份。另外,下例还说明如何还原媒体上的另一个备份集。差异备份追加到包含完整数据库备份的备份设备上。
  1. RESTORE DATABASE MyNwind

  2.    FROM MyNwind_1

  3.    WITH NORECOVERY

  4. RESTORE DATABASE MyNwind

  5.    FROM MyNwind_1

  6.    WITH FILE = 2
复制代码
C. 使用 RESTART 语法还原数据库



下例使用 RESTART 选项重新启动因服务器电源故障而中断的 RESTORE 操作。
  1. -- This database RESTORE halted prematurely due to power failure.

  2. RESTORE DATABASE MyNwind

  3.    FROM MyNwind_1

  4. -- Here is the RESTORE RESTART operation.

  5. RESTORE DATABASE MyNwind

  6.    FROM MyNwind_1 WITH RESTART
复制代码
D. 还原数据库并移动文件



下例还原完整数据库和事务日志,并将已还原的数据库移动到 C:\Program Files\Microsoft SQL Server\MSSQL\Data 目录下。
  1. RESTORE DATABASE MyNwind

  2.    FROM MyNwind_1

  3.    WITH NORECOVERY,

  4.       MOVE 'MyNwind' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.mdf',

  5.       MOVE 'MyNwindLog1' TO 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\NewNwind.ldf'

  6. RESTORE LOG MyNwind

  7.    FROM MyNwindLog1

  8.    WITH RECOVERY
复制代码
E. 使用 BACKUP 和 RESTORE 创建数据库的复本



下例显示使用 BACKUP 和 RESTORE 语句创建 Northwind 数据库的复本。MOVE 语句使数据和日志文件还原到指定的位置。RESTORE FILELISTONLY 语句用于确定待还原数据库内的文件数及名称。该数据库的新复本称为 TestDB。有关更多信息,请参见 RESTORE FILELISTONLY。
  1. BACKUP DATABASE Northwind

  2.    TO DISK = 'c:\Northwind.bak'

  3. RESTORE FILELISTONLY

  4.    FROM DISK = 'c:\Northwind.bak'

  5. RESTORE DATABASE TestDB

  6.    FROM DISK = 'c:\Northwind.bak'

  7.    WITH MOVE 'Northwind' TO 'c:\test\testdb.mdf',

  8.    MOVE 'Northwind_log' TO 'c:\test\testdb.ldf'

  9. GO
复制代码
F. 使用 STOPAT 语法还原到即时点和使用多个设备进行还原



下例将数据库还原到其在 1998 年 4 月 15 日中午 12 点时的状态,并显示涉及多个日志和多个备份设备的还原操作。
  1. RESTORE DATABASE MyNwind

  2.    FROM MyNwind_1, MyNwind_2

  3.    WITH NORECOVERY

  4. RESTORE LOG MyNwind

  5.    FROM MyNwindLog1

  6.    WITH NORECOVERY

  7. RESTORE LOG MyNwind

  8.    FROM MyNwindLog2

  9.    WITH RECOVERY, STOPAT = 'Apr 15, 1998 12:00 AM'
复制代码
G. 使用 TAPE 语法还原



下例显示从 TAPE 备份设备还原完整数据库备份。
  1. RESTORE DATABASE MyNwind

  2.    FROM TAPE = '\\.\tape0'
复制代码
H. 使用 FILE 和 FILEGROUP 语法还原



下例还原一个包含两个文件、一个文件组和一个事务日志的数据库。
  1. RESTORE DATABASE MyNwind

  2.    FILE = 'MyNwind_data_1',

  3.    FILE = 'MyNwind_data_2',

  4.    FILEGROUP = 'new_customers'

  5.    FROM MyNwind_1

  6.    WITH NORECOVERY

  7. -- Restore the log backup.

  8. RESTORE LOG MyNwind

  9.    FROM MyNwindLog1
复制代码
I. 将事务日志还原到标记处



下例显示将事务日志还原到名为"RoyaltyUpdate"的标记处。
  1. BEGIN TRANSACTION RoyaltyUpdate

  2.    WITH MARK 'Update royalty values'

  3. GO

  4. USE pubs

  5. GO

  6. UPDATE roysched

  7.    SET royalty = royalty * 1.10

  8.    WHERE title_id LIKE 'PC%'

  9. GO

  10. COMMIT TRANSACTION RoyaltyUpdate

  11. GO

  12. --Time passes. Regular database

  13. --and log backups are taken.

  14. --An error occurs.

  15. USE master

  16. GO



  17. RESTORE DATABASE pubs

  18. FROM Pubs1

  19. WITH FILE = 3, NORECOVERY

  20. GO

  21. RESTORE LOG pubs

  22.    FROM Pubs1

  23.    WITH FILE = 4,

  24.    STOPATMARK = 'RoyaltyUpdate'
复制代码





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3