Sqlserver 监控使用磁盘空间情况

最近遇到一个小问题:为了保存以往的一些数据,间了大量临时表,导致SQLserver 数据增长过快,不得不想个办法监控磁盘空间使用情况。

网上一般有几种办法:
一是使用 dm_os_volume_stats函数,缺点是 无法获取非数据库所在的磁盘空间使用情况。

二是使用 Exec master.dbo.xp_fixeddrives ,缺点是只有磁盘空间使用情况,没有总容量。

三是使用xp_fixeddrives+xp_cmdshell,虽然有现成的语句,但过于复杂,而且打开cmdshell是存在一定的风险。

所以,可以简化操作如下:
1、使用dm_os_volume_stats函数,获得所有磁盘信息,若某个磁盘不在其中,则先增加一个临时数据库

例如,如果数据只存放在c\d盘,E盘没有数据库但用于备份,也需要监控,可以临时建立数据库(其他磁盘可参考):

USE [master]
GO/****** Object:  Database [TEMP_BT]    Script Date: 2023/9/14 8:59:38 ******/
DROP DATABASE IF EXISTS [TEMP_BT]
GO/****** Object:  Database [TEMP_BT]    Script Date: 2023/9/14 8:59:38 ******/
CREATE DATABASE [TEMP_BT]CONTAINMENT = NONEON  PRIMARY 
( NAME = N'TEMP_BT', FILENAME = N'E:\DATA\TEMP_BT.mdf' , SIZE = 1024KB , MAXSIZE = UNLIMITED, FILEGROWTH = 16KB )LOG ON 
( NAME = N'TEMP_BT_log', FILENAME = N'E:\DATA\TEMP_BT_log.ldf' , SIZE = 1024KB , MAXSIZE = 2GB , FILEGROWTH = 16KB )
GO

2、用dm_os_volume_stats函数获取磁盘信息,这些语句已经有现成的:

(假设数据库用 Data)

drop  table  if  exists   [Data].[dbo].[T_diskspace]
goWITH T1 AS (
SELECT DISTINCT
REPLACE(vs.volume_mount_point,':\','') AS Drive_Name ,
CAST(vs.total_bytes / 1024.0 / 1024 / 1024 AS NUMERIC(18,2)) AS Total_Space_GB ,
CAST(vs.available_bytes / 1024.0 / 1024 / 1024  AS NUMERIC(18,2)) AS Free_Space_GB
FROM    sys.master_files AS f
outer APPLY sys.dm_os_volume_stats(f.database_id, f.file_id) AS vs
)
SELECT
GETDATE() as  sdate,
Drive_Name,
Total_Space_GB,
Total_Space_GB-Free_Space_GB AS Used_Space_GB,
Free_Space_GB,
CAST(Free_Space_GB*100/Total_Space_GB AS NUMERIC(18,2)) AS Free_Space_Percent
into  [Data].[dbo].[T_diskspace]
FROM T1gouse [Data]
goselect *  from   [Data].[dbo].[T_diskspace]go

完成后,如下图可见:

在这里插入图片描述
当然同时可删除 临时数据库:

use [master]
goDROP DATABASE IF EXISTS [TEMP_BT]
GO

以上数据获取后运行一次保存即可,以后无需运行

3、用 Exec master.dbo.xp_fixeddrives 监控磁盘空间情况即可。

use [Data]
goselect *  from   [Data].[dbo].[T_diskspace]godrop table  if exists [dbo].[Temp_diskspace]
goCREATE TABLE [dbo].[Temp_diskspace]([Drive_name] [nvarchar](500)  NULL,[Free_Space] [numeric](20,2)  NULL,
) ON [PRIMARY]
GOinsert into [Data].[dbo].[Temp_diskspace](Drive_Name,Free_Space)
Exec  master.dbo.xp_fixeddrives goupdate [Data].[dbo].[T_diskspace] set sdate=GETDATE(),Free_Space_GB=cast(b.Free_Space/1024 as numeric(20,2))
from [Data].[dbo].[T_diskspace] a,[Data].[dbo].[Temp_diskspace] b
where a.Drive_Name=b.Drive_Namegoupdate [Data].[dbo].[T_diskspace] set Used_Space_GB=Total_Space_GB-Free_Space_GB,
Free_Space_Percent=CAST(Free_Space_GB*100/Total_Space_GB AS NUMERIC(18,2)) drop  table if exists [dbo].[Temp_diskspace]
goselect *  from   [Data].[dbo].[T_diskspace]go

这段代码每日运行即可

以上需要 SQLServer 2008 以上版本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/111535.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

流量卡的最低申请年龄是多少?关于流量卡申请年龄问题解答。

随着短视频的兴起,现在各个年龄段的朋友对流量的需求也是越来越多,据小编了解,尤其是年轻的网友,越来越多的人会考虑购买流量卡来满足自己的需求,那么问题来了,流量卡的申请年龄有什么限制吗? ​…

C++项目中mysql的环境配置

第一步创建好项目,选择X64架构 此次项目采用动态库在项目文件夹加入mysql的库分别为libmysql.dll和include 在包含目录中填入相对路径 添加附加依赖项 现在我们写一个开发环境验证代码,检查一下环境是否配置成功 F7生成此时完美运行 至此环境已经配置完成…

钉钉对接打通金蝶云星空获取审批实例详情接口与采购订单新增接口

钉钉对接打通金蝶云星空获取审批实例详情接口与采购订单新增接口 数据源平台:钉钉 钉钉是阿里巴巴集团打造的企业级智能移动办公平台,是数字经济时代的企业组织协同办公和应用开发平台。钉钉将IM即时沟通、钉钉文档、钉闪会、钉盘、Teambition、OA审批、智能人事、钉…

kubesphere中间件部署

微服务部署前中间件部署 一、MySQL部署 1.1 使用Docker实现MySQL主从复制 docker run -p 3307:3306 --name mysql-master \ -v /mydata/mysql/master/log:/var/log/mysql \ -v /mydata/mysql/master/data:/var/lib/mysql \ -v /mydata/mysql/master/conf:/etc/mysql \ -e My…

3.k8s dashboard设置域名登录案例(ingress版本为1.3.1)

文章目录 前言一、安装ingress1.1 下载ingress部署文件1.2 查看是否安装成功 二、配置dashboard域名映射2.1.在windows和linux添加上域名映射2.2 生成tls证书2.3 新增ingress配置2.3 验证 总结 前言 前面搭建了集群,配置了账号密码登录,现在配置k8s das…

React如何实现国际化?

目录 一、Redux准备工作 commonTypes.js commonActions.js commonReducer.js rootReducer.js 二、然后定义SelectLang组件 index.js index.less 三、创建语言包 welcomeLocale.js index.js 四、使用 react的入口文件 App.js welcome.js 附 关于如何实现国际…

汉诺塔问题(包含了三台柱和四台柱)——C语言版本

目录 1. 什么是汉诺塔 2. 三座台柱的汉诺塔 2.1 思路 2.2 三座台柱的汉诺塔代码 3. 四座台柱的汉诺塔 3.1 思路 3.2 四座台柱的汉诺塔代码 1. 什么是汉诺塔 汉诺塔代码的功能:计算盘子的移动次数,由数学公式知,汉诺塔的盘子移动次数与…

Mybatis学习笔记3 在Web中应用Mybatis

Mybatis学习笔记2 增删改查及核心配置文件详解_biubiubiu0706的博客-CSDN博客 技术栈:HTMLServletMybatis 学习目标: 掌握mybatis在web应用中如何使用 Mybatis三大对对象的作用域和生命周期 关于Mybatis中三大对象的作用域和生命周期、 官网说明 ThreadLocal原理及使用 巩…

云原生之使用Docker部署Teedy轻量级文档管理系统

云原生之使用Docker部署Teedy轻量级文档管理系统 一、Teedy介绍1.1 Teedy简介1.2 Teedy特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Teedy镜像五、部署Teedy轻量级文…

SpringMVC之JSON数据返回与异常处理机制

目录 一.SpringMVC的JSON数据返回 1.导入Maven依赖 2.配置spring-mvc.xml 3.ResponseBody注解的使用 3.1案例演示 1.List集合转JSON 2.Map集合转JSON 3.返回指定格式String 4. ResponseBody用法 5.Jackson 5.1介绍 5.2常用注解 二.异常处理机制 1.为什么要全局异常处…

开学买什么牌子的电容笔比较好?触控笔排行榜

苹果电容笔与市面上的平替电容笔最大的不同之处,就在于平替电容笔并没有重力感应,而是仅只有一个倾斜压感。不过,一般的电容笔也能用来写字,与苹果的Pencil并无多大不同,并且大多售价在200元。现在,国内出现…

HarmonyOS开发环境搭建

一 鸿蒙简介: 1.1 HarmonyOS是华为自研的一款分布式操作系统,兼容Android,但又区别Android,不仅仅定位于手机系统。更侧重于万物物联和智能终端,目前已更新到4.0版本。 1.2 HarmonyOS软件编程语言是ArkTS&#xff0c…