• 数据库日常维护-CheckList_02有关数据库备份检查


    数据库备份是DB日常运维中最基本的也是最重要的工作,很多情况下都是做成作业形式实现自动化周期性的做全备、差异以及日志备份。那么,如果作业出现问题没有完成工作,我们可以设置自动报警如email被动提醒我们,当然也可以使用下面脚本主动地对多个数据库服务上数据库备份情况做详细了解,详细代码分享如下:

    --------------------------------------------------------------------------------- 

    --前一周所有数据库备份情况

    --------------------------------------------------------------------------------- 

    SELECT  

       CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 

       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 AS backup_type,  

       msdb.dbo.backupset.backup_size,  

       msdb.dbo.backupmediafamily.logical_device_name,  

       msdb.dbo.backupmediafamily.physical_device_name,   

       msdb.dbo.backupset.name AS backupset_name, 

       msdb.dbo.backupset.description 

    FROM   msdb.dbo.backupmediafamily  

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

    WHERE  (CONVERT(datetime, msdb.dbo.backupset.backup_start_date, 102) >= GETDATE() - 7)  

    ORDER BY  

       msdb.dbo.backupset.database_name, 

       msdb.dbo.backupset.backup_finish_date

     ------------------------------------------------------------------------------------------- 

    --近期每个数据库的备份情况 

    ------------------------------------------------------------------------------------------- 

    SELECT  

       CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 

       msdb.dbo.backupset.database_name,  

       MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date 

    FROM   msdb.dbo.backupmediafamily  

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

    WHERE  msdb..backupset.type = 'D' 

    GROUP BY 

       msdb.dbo.backupset.database_name  

    ORDER BY  

       msdb.dbo.backupset.database_name

    ------------------------------------------------------------------------------------------- 

    --近期每个数据库备份-详细情况

    ------------------------------------------------------------------------------------------- 

    SELECT  

       A.[Server],  

       A.last_db_backup_date,  

       B.backup_start_date,  

       B.expiration_date, 

       B.backup_size,  

       B.logical_device_name,  

       B.physical_device_name,   

       B.backupset_name, 

       B.description 

    FROM 

       ( 

       SELECT   

           CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 

           msdb.dbo.backupset.database_name,  

           MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date 

       FROM    msdb.dbo.backupmediafamily  

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

       WHERE   msdb..backupset.type = 'D' 

       GROUP BY 

           msdb.dbo.backupset.database_name  

       ) AS A 

        LEFT JOIN      ( 

       SELECT   

       CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 

       msdb.dbo.backupset.database_name,  

       msdb.dbo.backupset.backup_start_date,  

       msdb.dbo.backupset.backup_finish_date, 

       msdb.dbo.backupset.expiration_date, 

       msdb.dbo.backupset.backup_size,  

       msdb.dbo.backupmediafamily.logical_device_name,  

       msdb.dbo.backupmediafamily.physical_device_name,   

       msdb.dbo.backupset.name AS backupset_name, 

       msdb.dbo.backupset.description 

    FROM   msdb.dbo.backupmediafamily  

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

    WHERE  msdb..backupset.type = 'D' 

       ) AS B 

       ON A.[server] = B.[server] AND A.[database_name] = B.[database_name] AND A.[last_db_backup_date] = B.[backup_finish_date] 

    ORDER BY  

       A.database_name

     ------------------------------------------------------------------------------------------- 

    --丢失备份

    ------------------------------------------------------------------------------------------- 

    --超过24小时的数据库备份

    SELECT 

       CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, 

       msdb.dbo.backupset.database_name, 

       MAX(msdb.dbo.backupset.backup_finish_date) AS last_db_backup_date, 

       DATEDIFF(hh, MAX(msdb.dbo.backupset.backup_finish_date), GETDATE()) AS [Backup Age (Hours)] 

    FROM    msdb.dbo.backupset 

    WHERE     msdb.dbo.backupset.type = 'D'  

    GROUP BY msdb.dbo.backupset.database_name 

    HAVING      (MAX(msdb.dbo.backupset.backup_finish_date) < DATEADD(hh, - 24, GETDATE()))  

    UNION  

    --没有任何备份历史  

    SELECT      

       CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server,  

       master.dbo.sysdatabases.NAME AS database_name,  

       NULL AS [Last Data Backup Date],  

       9999 AS [Backup Age (Hours)]  

    FROM 

       master.dbo.sysdatabases LEFT JOIN msdb.dbo.backupset 

           ON master.dbo.sysdatabases.name  = msdb.dbo.backupset.database_name 

    WHERE msdb.dbo.backupset.database_name IS NULL AND master.dbo.sysdatabases.name <> 'tempdb' 

    ORDER BY  

       msdb.dbo.backupset.database_name

     ------------------------------------------------------------------------------------------- 

    --检查所有备份文件大小 (GB)

    ------------------------------------------------------------------------------------------- 

    SELECT   getdate()  as,

    b.server_name, Round(SUM(convert(float,b.backup_size) /1024.0/1024.0/1024.0),2) AS 'backup_size_GB', 

    Round(SUM(convert(float,b.compressed_backup_size)/1024.0/1024.0/1024.0),2) AS 'compressed_backup_size_GB' FROM msdb..backupset b 

    where  b.database_name not in ('model','master','msdb','')

    --and b.type='D'

    AND backup_start_date>getdate()-1 

    GROUP BY b.server_name  

    ------------------------------------------------------------------------------------------- 

    Samezhao

  • 相关阅读:
    css样式的优先顺序
    销售基本礼仪(转)
    推神:如何让你的公众号变得性感起来?(转)
    为什么你有10年经验,但成不了专家?(转)
    一分钟区分一流公司、二流公司、三流公司(转)
    什么是销售(转)
    地暖销售(转)
    销售总监开会(转)
    销售观念+习惯(转)
    一流销售,二流销售,三流销售(转)
  • 原文地址:https://www.cnblogs.com/SameZhao/p/4719214.html
Copyright © 2020-2023  润新知