曾经遇到过一个用户MSDB数据库非常大,让我帮忙查查是什么原因。使用sp_spaceused找出了所有表的数据大小,发现问题是SQL Server备份和还原历史表数据太大。用户经常会做日志备份,但是从来没有清除过历史记录。后来在设置了维护计划定期清除备份记录,问题就不在发生了。

这里列出了查询SQL Server备份还原记录的语句以及如何清理数据库备份还原的脚本:

--查询SQL Server备份历史

SELECT

CONVERT(CHAR(100),SERVERPROPERTY('Servername'))ASServer,

msdb.dbo.backupset.database_name,

msdb.dbo.backupset.backup_start_date,

msdb.dbo.backupset.backup_finish_date,

msdb.dbo.backupset.expiration_date,

CASE msdb..backupset.type

WHEN 'D' THEN 'Database'

WHEN 'L' THEN 'Log'

END ASbackup_type,

msdb.dbo.backupset.backup_size,

msdb.dbo.backupmediafamily.logical_device_name,

msdb.dbo.backupmediafamily.physical_device_name,

msdb.dbo.backupset.nameASbackupset_name,

msdb.dbo.backupset.description

FROM   msdb.dbo.backupmediafamily

INNER JOIN msdb.dbo.backupsetONmsdb.dbo.backupmediafamily.media_set_id=msdb.dbo.backupset.media_set_id

ORDER BY

msdb.dbo.backupset.database_name,

msdb.dbo.backupset.backup_finish_date

-----查询SQLServer还原历史

select bus.server_nameas'server',rh.restore_date,bus.database_nameas'database',

CAST(bus.first_lsnASVARCHAR(50))asLSN_First,

CAST(bus.last_lsnASVARCHAR(50))asLSN_Last,

CASE rh.[restore_type]

WHEN 'D'THEN'Database'

WHEN 'F'THEN'File'

WHEN 'G'THEN'Filegroup'

WHEN 'I'THEN'Differential'

WHEN 'L'THEN'Log'

WHEN 'V'THEN'Verifyonly'

END ASrhType

FROM msdb.dbo.backupsetbus

INNER JOINmsdb.dbo.restorehistoryrhON rh.backup_set_id=bus.backup_set_id

---清除20120101之前所有的备份还原记录(没有参数指定只删除备份或者欢迎记录)

use msdb

go

exec sp_delete_backuphistory@oldest_date='20121010'

--删除'AdventureWorks2012'数据库的备份还原记录(没有参数指定保留日期,All或者None)

USE msdb;

GO

EXEC sp_delete_database_backuphistory@database_name='AdventureWorks2012';

http://blog.csdn.net/kevinsqlserver/article/details/8087293

查询清除SQL Server数据库备份还原历史记录的更多相关文章

  1. SQL server数据库备份还原问题备忘(亲测有效)

    问题一:SQL server数据库备份还原方法 http://www.cnblogs.com/zgqys1980/archive/2012/07/04/2576382.html 问题二:无法执行 BA ...

  2. SQL Server数据库备份&还原

    一.备份 1.登录数据库 2.找到要还原的数据库 右键-任务-备份-添加(路径只写一个,刚开始二个总是报错)-确定 二.还原数据库 这个之间报错了二次 1.报错1:备份集中的数据库与现有数据库“XXX ...

  3. SQL Server 数据库备份还原和数据恢复

      认识数据库备份和事务日志备份 数据库备份与日志备份是数据库维护的日常工作,备份的目的是在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点. 数据 ...

  4. SQL server 数据库备份还原Sql

    /************ 一.数据库备份 ************/ --完整备份默认追加到现有的文件 backup database DBXS To disk='d:\backup\DBXS_fu ...

  5. SQL Server 数据库备份还原常用SQL语句及注意

    1.备份数据库 backup database db_name to disk='d:\db_name.bak' with format --通过使用with format可以做到覆盖任何现有的备份和 ...

  6. SQL Server数据库 备份A库,然后删除A库,再还原A库,此时数据库一直显示“正在还原”的解决方法

    SQL Server数据库 备份A库,然后删除A库,再还原A库,此时数据库一直显示"正在还原"的解决方法: A库一直显示"正在还原". 在这种状态下,由于未提交 ...

  7. (图解版)SQL Server数据库备份与还原

        本文介绍了SQL Server数据库备份的两种方式.一种是直接拷贝数据库中的文件mdf 和日志文件ldf,另一种是生成脚本语言. 第一种方式:     选中需要备份的数据库,将数据库从运行的数 ...

  8. sql server 数据库备份历史记录

    sql server 数据库备份历史记录 SELECT ),SERVERPROPERTY('Servername'))AS Server, bs.database_name, bs.backup_st ...

  9. SQL Server数据库备份的镜像

    SQL Server数据库备份的镜像 一个完整备份可以分开镜像 USE master GO BACKUP DATABASE [testdatabase] TO DISK = N'C:\testdata ...

随机推荐

  1. HDU 1845 Jimmy’s Assignment(二分匹配)

    Jimmy’s Assignment Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Other ...

  2. jquery children()方法

    1.测试代码 <!DOCTYPE html> <html> <head> <script type="text/javascript" s ...

  3. linux面试题目--1

    Linux面试题目 填空题1. 在Linux系统中,以 (文件)方式访问设备 .2. Linux内核引导时,从文件/etc/fstab 中读取要加载的文件系统.3. Linux文件系统中每个文件用i节 ...

  4. 数据库建模软件ERStudio-表关系建模详解

    ERStudio是优秀的数据库建模软件,它不仅可以建立表.视图等模型,还可以建立多表间各种关系的模型,另外还可以根据模型生成表到数据库,下面具体讲解一下它的表关系建模. 1. 首先讲一下怎么建立表关系 ...

  5. git 超前一个版本 落后一个版本的解决方案

    在使用SourceTree的时候经常会遇见超前一个版本,落后N个版本的情况,遇见这种情况应该怎么办呢? 首先打开终端,最好是从SourceTree里面打开,菜单栏有个终端按钮. 然后输入: $ git ...

  6. vim 命令的使用

    稍微再研究一下vim的命令使用. ----------------------------------------------------------------------------------- ...

  7. C# WinForm 异步执行耗时操作并将过程显示在界面中

    private void button3_Click(object sender, EventArgs e)        {            RunAsync(() =>         ...

  8. java 过滤器(自己的理解)

    filter继承javax.servlet.* 必须实现doFilter方法 chain.doFilter(request, response);这句话必须写在doFilter方法内部(以便调用其他的 ...

  9. hdu 4506 小明系列故事——师兄帮帮忙【幂取模乱搞】

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=4506 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  10. 使用gradle构建Android时 版本号versionName中嵌入git提交信息

    为什么要这么做   在应用开发的版本迭代过程中,通过版本号并不能快速定位到所对应的代码,导致在后面分析问题追溯对应版本的代码时比较麻烦.   如果代码是通过git来管理的,git的commit id等 ...