返回顶部
首页 > 资讯 > 数据库 >PowerShell:30行代码轻松实现SQL Server数据库容量监控
  • 499
分享到

PowerShell:30行代码轻松实现SQL Server数据库容量监控

2024-04-02 19:04:59 499人浏览 独家记忆
摘要

本文介绍如何用Powershell脚本实现SQL Server数据库容量监控闲话就不多说,直入主题一、建表为每台服务器创建一个表,用于记录服务器各个数据库的容量,以服务器名作为表名。CREATE 

本文介绍如何用Powershell脚本实现SQL Server数据库容量监控


闲话就不多说,直入主题


一、建表

为每台服务器创建一个表,用于记录服务器各个数据库的容量,以服务器名作为表名。

CREATE TABLE table_name(
[LOG_DATE] [varchar](20) NULL,
[DB_NAME] [varchar](50) NULL,
[TOTAL_SIZE_MB] [numeric](15, 2) NULL,
[USE_SIZE_MB] [numeric](15, 2) NULL,
[FREE_SIZE_MB] [numeric](15, 2) NULL,
[DaiLY_GROWTH_MB] [numeric](15, 2) NULL DEFAULT ((0))
)


二、数据收集


要点:

1. 主要利用sp_msforeachdb、sp_spaceused循环获取各数据库容量数据,简化代码

2. today_use_size = total_szie - free_size

3. growth_szie = today_use_size - yesterday_use_size

4. chkservers.txt存放服务器名

5. 创建作业,每天定时执行(如需调整为每周、月执行,修改$yesterday=$today.aDDDays(-1)及作业频率即可)


$MonitorServer='' 
$servers=GC F:\DBA\chkservers.txt
$today=Get-Date
$log_date=$today.toString('yyyyMMdd')
$yesterday=$today.adddays(-1)
$compare_date=$yesterday.toString('yyyyMMdd')
Foreach($server in $servers){
if($server.length -gt 0){
$results=invoke-sqlcmd "exec sp_msforeachdb 'if(db_id(''?'') not in(1,2,3,4)) begin exec [?]..sp_spaceused end'" -ServerInstance $server
For($n=0;$n -lt $results.length;$n=$n+2){
$db_name=$results[$n].database_name
$db_total_size=$results[$n].database_size
$db_free_size=$results[$n].'unallocated space'
$total_size=$db_total_size.substring(0,$db_total_size.length-3)
$free_size=$db_free_size.substring(0,$db_free_size.length-3)
$today_use_size=$total_size-$free_size
$count=invoke-sqlcmd "select count(1) as count from DBMonitor..$server where LOG_DATE='$compare_date' and DB_NAME='$db_name'" -ServerInstance $MonitorServer
if($count.count -gt 0){
$comp_results=invoke-sqlcmd "select MAX(USE_SIZE_MB) as USE_SIZE_MB from DBMonitor..$server where LOG_DATE='$compare_date' and DB_NAME='$db_name'" -ServerInstance $MonitorServer
$yesterday_use_size=$comp_results.USE_SIZE_MB
$growth_size=$today_use_size-$yesterday_use_size
}
else{
$growth_size=0
}
invoke-sqlcmd "insert into DBMonitor..$server select '$log_date','$db_name',$total_size,$today_use_size,$free_size,$growth_size" -ServerInstance $MonitorServer
}
}
}



效果图:

PowerShell:30行代码轻松实现SQL Server数据库容量监控



您可能感兴趣的文档:

--结束END--

本文标题: PowerShell:30行代码轻松实现SQL Server数据库容量监控

本文链接: https://lsjlt.com/news/41438.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PowerShell:30行代码轻松实现SQL Server数据库容量监控
    本文介绍如何用PowerShell脚本实现SQL Server数据库容量监控闲话就不多说,直入主题一、建表为每台服务器创建一个表,用于记录服务器各个数据库的容量,以服务器名作为表名。CREATE ...
    99+
    2024-04-02
  • 使用Python怎么实现SQL Server数据库的对象同步轻量级
    这期内容当中小编将会给大家带来有关使用Python怎么实现SQL Server数据库的对象同步轻量级,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1,表的存在依赖于sch...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作