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


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

      这些msdb表包括:

       

          backupfile 

      backupfilegroup

      backupmediafamily

      backupmediaset

      backupset

      restorefile

      restorefilegroup

      restorehistory

      幸运的是,微软提供了两个系统存储过程,你可以用它们来限制保存出具的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备份和恢复记录

      图三

  • 相关阅读:
    20170417成员运算符、身份运算符、布尔运算符
    20170417学习find、replace、abs三个函数
    shell 双中括号 双小括号
    man 命令
    awk 命令-对文本和数据进行处理
    shell-1-day
    shell---0-day
    /etc
    Selenium IDE使用
    python 自动化测试框架 pytest 和unittest 的区别
  • 原文地址:https://www.cnblogs.com/qingsong-do/p/4185662.html
Copyright © 2020-2023  润新知