查詢清除SQL Server數據庫備份還原歷史記錄


曾經遇到過一個用戶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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM