上一篇
📢 最新动态(2025年8月)
微软近期发布了SQL Server 2025的累积更新CU3,强化了内置监控工具的性能指标采集能力,新增对多租户环境的资源隔离监控支持,DBA们现在可以通过扩展事件(Extended Events)直接捕获查询级资源争用详情,这对自动化监控脚本的优化至关重要!
DBA的日常就像数据库的“急诊医生”👨⚕️,而自动化监控就是7×24小时值班的“监护仪”,它能帮你:
-- 每日自动运行的“体检报告” SELECT @@SERVERNAME AS [服务器名], GETDATE() AS [检查时间], (SELECT COUNT(*) FROM sys.databases WHERE state = 0) AS [正常数据库数], (SELECT COUNT(*) FROM sys.databases WHERE state > 0) AS [异常数据库数], (SELECT COUNT(*) FROM sys.dm_os_wait_stats WHERE wait_time_ms > 1000) AS [高等待任务数]
📌 关键指标:数据库状态、等待统计、磁盘剩余空间(低于15%就报警!)
-- 每小时捕获TOP 10慢查询 SELECT TOP 10 qs.execution_count, qs.total_elapsed_time/1000 AS [总耗时(ms)], SUBSTRING(qt.text, (qs.statement_start_offset/2)+1, ((CASE qs.statement_end_offset WHEN -1 THEN DATALENGTH(qt.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2)+1) AS [SQL片段] FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt ORDER BY qs.total_elapsed_time DESC
💡 进阶技巧:用sp_BlitzCache
工具直接分析执行计划问题
-- 数据库文件增长预警 SELECT DB_NAME(database_id) AS [数据库名], name AS [逻辑文件名], size/128.0 AS [当前大小(MB)], growth AS [增长值(MB)] FROM sys.master_files WHERE growth > 10240 -- 增长超过10GB的需特别注意!
-- 检查最近24小时失败的作业 SELECT name AS [作业名], CONVERT(VARCHAR, run_date) + ' ' + STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR, run_time), 6, 0, ':'), 9, 0, ':') AS [运行时间], CASE WHEN run_status = 0 THEN '失败' ELSE '成功' END AS [状态] FROM msdb.dbo.sysjobhistory WHERE run_date >= CONVERT(VARCHAR, GETDATE()-1, 112) AND run_status = 0
-- 实时阻塞分析 SELECT blocking.session_id AS [阻塞者SPID], blocked.session_id AS [被阻塞SPID], DB_NAME(blocked.database_id) AS [数据库名], blocked.wait_time/1000 AS [等待时长(秒)], (SELECT text FROM sys.dm_exec_sql_text(blocked.sql_handle)) AS [被阻塞SQL] FROM sys.dm_exec_requests blocked JOIN sys.dm_exec_sessions blocking ON blocked.blocking_session_id = blocking.session_id WHERE blocked.blocking_session_id > 0
专门创建DBA_Monitor
数据库存放监控结果,避免污染业务数据
-- 创建每天8:00运行的作业 USE msdb; EXEC dbo.sp_add_job @job_name = 'Daily_Health_Check'; EXEC sp_add_jobstep @job_name = 'Daily_Health_Check', @step_name = 'Run_Basic_Monitor', @subsystem = 'TSQL', @command = 'EXEC sp_DBA_BasicMonitor'; -- 你的监控存储过程 EXEC sp_add_schedule @schedule_name = 'Daily_8AM', @freq_type = 4, -- 每天 @active_start_time = 080000; -- 8:00
配置Database Mail,当监控到严重错误时自动发邮件(附送邮件模板📧):
主题:[紧急] SQL Server异常 - {错误类型}
服务器:{服务器名}
时间:{发生时间}
错误详情:{监控结果}
建议操作:{如“检查锁阻塞”}
把历史监控数据导入Power BI,制作趋势看板:
🛑 最后提醒:自动化不是万能药!每月至少做一次人工深度检查,毕竟机器看不懂“业务逻辑不合理”这种问题😉 现在就去设置你的第一个监控作业吧!
本文由 程碧巧 于2025-08-04发表在【云服务器提供商】,文中图片由(程碧巧)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/531802.html
发表评论