当前位置: 首页 > news >正文

SQL Server 备份相关信息查看

目录标题

      • 一、统计每个数据库在不同备份目录和备份类型下的备份次数,以及最后一次备份的时间
        • 整体功能
        • 详细解释
      • 二、查询所有完整数据库备份的信息,包括备份集 ID、数据库名称、备份开始时间和备份文件的物理设备名称,并按备份开始时间降序排列
        • 整体功能
        • 详细解释
      • 三、查询所有备份的详细信息,并按备份开始时间降序排列,最新的备份记录排在前面
        • 整体功能
        • 详细解释

一、统计每个数据库在不同备份目录和备份类型下的备份次数,以及最后一次备份的时间

select
    数据库名 = x.database_name,
    备份目录 = x.path,
    备份类型  = x.type,
    备份次数 = COUNT(x.back_file),
    最后备份时间 = MAX(x.start_time)
from (
    SELECT
        start_time = bs.backup_start_date,
        finish_time = bs.backup_finish_date,
        time_cost_sec = DATEDIFF(SECOND, bs.backup_start_date, bs.backup_finish_date),
        back_file = bmf.physical_device_name,
        path = LEFT(bmf.physical_device_name,LEN(bmf.physical_device_name) - charindex('\',reverse(bmf.physical_device_name),1) + 1),
        ind = charindex('\',reverse(bmf.physical_device_name),1),
        bs.type,
        backup_size_mb = ROUND(((bs.backup_size/1024)/1024),2),
        compressed_size_mb = ROUND(((bs.compressed_backup_size/1024)/1024),2),
        bs.first_lsn,
        bs.last_lsn,
        bs.database_name
    FROM msdb.dbo.backupmediafamily bmf WITH(NOLOCK)
        INNER JOIN msdb.dbo.backupset bs WITH(NOLOCK)
        ON bmf.media_set_id = bs.media_set_id
) x
group by x.path, x.type, x.database_name
order by x.database_name;
整体功能

此 SQL 用于统计每个数据库在不同备份目录和备份类型下的备份次数,以及最后一次备份的时间。

详细解释
  1. 子查询

    • msdb.dbo.backupmediafamilymsdb.dbo.backupset 这两个系统表中查询备份信息。WITH(NOLOCK) 提示表示在查询时不使用锁,可避免阻塞其他事务,但可能会读取到未提交的数据。
    • start_time:备份开始的日期和时间。
    • finish_time:备份结束的日期和时间。
    • time_cost_sec:备份所花费的时间(以秒为单位)。
    • back_file:备份文件的物理设备名称。
    • path:通过字符串处理函数提取备份文件所在的目录。
    • ind:用于提取目录的辅助计算字段。
    • type:备份类型(如 D 表示完整备份,I 表示差异备份,L 表示日志备份)。
    • backup_size_mb:备份文件的大小(以 MB 为单位)。
    • compressed_size_mb:压缩后的备份文件大小(以 MB 为单位)。
    • first_lsnlast_lsn:备份集的起始和结束日志序列号。
    • database_name:备份的数据库名称。
  2. 主查询

    • x.pathx.typex.database_name 进行分组。
    • COUNT(x.back_file):统计每个分组内的备份次数。
    • MAX(x.start_time):找出每个分组内的最后一次备份时间。
    • 最终结果按数据库名称排序。

二、查询所有完整数据库备份的信息,包括备份集 ID、数据库名称、备份开始时间和备份文件的物理设备名称,并按备份开始时间降序排列

SELECT 
    b.backup_set_id,
    b.database_name,
    b.backup_start_date,
    mf.physical_device_name
FROM 
    msdb.dbo.backupset b
JOIN 
    msdb.dbo.backupmediafamily mf ON b.media_set_id = mf.media_set_id
WHERE 
    b.type = 'D' -- 'D' 表示完整数据库备份
ORDER BY 
    b.backup_start_date DESC;
整体功能

此 SQL 用于查询所有完整数据库备份的信息,包括备份集 ID、数据库名称、备份开始时间和备份文件的物理设备名称,并按备份开始时间降序排列。

详细解释
  1. 表连接
    • 通过 media_set_id 字段将 msdb.dbo.backupsetmsdb.dbo.backupmediafamily 表进行连接。
  2. 过滤条件
    • b.type = 'D' 表示只查询完整数据库备份的记录。
  3. 排序
    • ORDER BY b.backup_start_date DESC 按备份开始时间降序排列,最新的备份记录排在前面。

三、查询所有备份的详细信息,并按备份开始时间降序排列,最新的备份记录排在前面

select * from (
    SELECT
        start_time = bs.backup_start_date,
        finish_time = bs.backup_finish_date, 
        time_cost_sec = DATEDIFF(SECOND, bs.backup_start_date, bs.backup_finish_date),
        back_file = bmf.physical_device_name,
        path = LEFT(bmf.physical_device_name,LEN(bmf.physical_device_name) - charindex('\',reverse(bmf.physical_device_name),1) + 1),
        bs.type,
        backup_size_mb = ROUND(((bs.backup_size/1024)/1024),2),
        compressed_size_mb = ROUND(((bs.compressed_backup_size/1024)/1024),2),
        bs.first_lsn,
        bs.last_lsn
    FROM msdb.dbo.backupmediafamily bmf WITH(NOLOCK)
        INNER JOIN msdb.dbo.backupset bs WITH(NOLOCK)
        ON bmf.media_set_id = bs.media_set_id
) x
ORDER BY x.start_time DESC;
整体功能

此 SQL 用于查询所有备份的详细信息,并按备份开始时间降序排列,最新的备份记录排在前面。

详细解释
  1. 子查询
    • 与第一段 SQL 的子查询类似,从 msdb.dbo.backupmediafamilymsdb.dbo.backupset 表中查询备份信息。
  2. 主查询
    • SELECT * 表示选择子查询中的所有列。
    • ORDER BY x.start_time DESC 按备份开始时间降序排列。
http://www.dtcms.com/a/98346.html

相关文章:

  • http与tcp的关系
  • 自动化发布工具CI/CD实践Jenkins常用工具和插件的使用
  • 二分查找【看了包会】
  • 线程概念与控制(中)
  • 深度剖析 ansible:从部署基础到模块运用及剧本编写
  • 【算法day25】 最长有效括号——给你一个只包含 ‘(‘ 和 ‘)‘ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。
  • [Raspberry Pi]如何將看門狗(WatchDog)服務建置在樹莓派的Ubuntu作業系統中?
  • 查看openjdk源码
  • TDengine 中的异常恢复
  • 北斗导航 | 基于因子图优化的GNSS/INS组合导航完好性监测算法研究,附matlab代码
  • pyinstaller 对 pyexecjs模块打包老会有终端框闪烁
  • 【学Rust写CAD】18 定点数2D仿射变换矩阵结构体(MatrixFixedPoint结构别名)
  • 基于深度学习的手势识别系统设计
  • 3. 第三放平台部署deepseek
  • 部署堆叠+链路聚合架构,解锁网络高可用新体验
  • AGV-----RCS基础任务发布
  • 22_js运动函数
  • 历史数据分析——宝钢
  • AI赋能单片机开发的环节与方法
  • 观察者模式:解耦对象间的依赖关系
  • 【嵌入式学习3】多任务编程
  • (二)万字长文解析:deepResearch如何用更长的思考时间换取更高质量的回复?各家产品对比深度详解
  • 锐评|希捷NVMe闪存+磁盘混合存储阵列
  • AB包介绍及导出工具实现+AB包资源简单加载
  • Flutter和React Native在开发app中,哪个对java开发工程师更适合
  • 如何看待职场中的“向上管理”
  • c中的变量命名规则
  • 【精修版】【中项】系统集成项目管理工程师:第12章 项目进度管理-12.4估算活动持续时间
  • Python爬虫:开启数据抓取的奇幻之旅(一)
  • 点云库(Point Cloud Library, PCL)