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

原创|其它|编辑:郝浩|2009-05-12 14:10:06.000|阅读 766 次

概述:问题:在您最近的一个技巧中,您提到SQL Server保存了在系统中完成的所有备份和恢复。我们公司经常执行备份和恢复,因此我注意到我们的msdb数据库由于这个原因变得非常大。我该如何清除其中一些数据并且释放一些数据库空间呢?

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

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

  这些msdb表包括:

  backupfile

  backupfilegroup

  backupmediafamily

  backupmediaset

  backupset

  restorefile

  restorefilegroup

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

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

  

  图一

  可能使用的第一个程序是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并且与这些已经删除的条目有关的备份记录都已经清除。

  

  图二

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

  -- delete all backup history for a specific database

  use msdb

  go

  exec sp_delete_database_backuphistory 'test1'

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

  

  图三


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:IT专家网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP