从SQL Server中清除msdb备份和恢复记录

正如我在前面的技巧“您的数据库上次恢复是何时呢?”中提到的,SQL Server使msdb数据库内系统表中的备份和恢复记录保持激活状态。没有正常的维护,这些系统表将变得很大,从而致使对于msdb数据库总体超大。数据库

  这些msdb表包括:spa

   

      backupfile 

  backupfilegrouprest

  backupmediafamilyci

  backupmediasetio

  backupsettable

  restorefiletest

  restorefilegroupdate

  restorehistoryfile

  幸运的是,微软提供了两个系统存储过程,你能够用它们来限制保存出具的msdb数据库表的大小。第一个程序删除日期晚于某个给定时间的全部备份和恢复。第二个程序容许你删除某个特定数据库的全部备份和恢复记录。让咱们具体看看这两个程序。技巧

 

  经过观察我系统上的msdb表backupset和restorehistory,我发现下面的已经执行的数据库备份和恢复:

  从SQL Server中清除msdb备份和恢复记录

  图一

可能使用的第一个程序是sp_delete_backuphistory。这个系统存储过程带有一个参数 – 一个截止时间。任何早于给定时间的日期都会从这个技巧前面提到的msdb表中删除。在下面的例子中,我将删除全部4/2/2009的全部日期。

   

      -- delete all backup/restore history prior to a specified date 

  use msdb

  go

  exec sp_delete_backuphistory '2009-04-02'

  go

  再次查看这些表。我发现全部早于4/2/2009而且与这些已经删除的条目有关的备份记录都已经清除。

 

  从SQL Server中清除msdb备份和恢复记录

  图二

  第二个系统存储过程容许你删除某个特定数据库的历史备份数据,这个程序被称做sp_delete_database_backuphistory。不幸的是,这个程序没有提供一个选择截止日期的更好的选项;它全有或全无。在下一个例子中,我将删除一个给定数据库的全部备份记录。

   

      -- delete all backup history for a specific database 

  use msdb

  go

  exec sp_delete_database_backuphistory 'test1'

  go

  正如你看到的,只有这个给定数据库的记录被删除了:

 

  从SQL Server中清除msdb备份和恢复记录

  图三

相关文章
相关标签/搜索