SQL Server数据库日常检查
1.1代码检查从昨天到现在,SQL代理Job有没有运行失败的,会把运行失败的Job名字,步骤,运行时间,错误等级,错误原因罗列出来,方便查看。
----1.1 Check Job Fail List From Last Day To Now
SELECT j.[name],
h.step_id,
h.step_name,
h.run_date,
h.run_time,
h.sql_severity,
h.message,
h.server
FROM msdb.dbo.sysjobhistory h
INNER JOIN msdb.dbo.sysjobs j
ON h.job_id = j.job_id
INNER JOIN msdb.dbo.sysjobsteps s
ON j.job_id = s.job_id
AND h.step_id = s.step_id
WHERE h.run_status = 0 -- Failure
AND h.run_date > CONVERT(int,CONVERT(varchar(10), DATEADD(DAY, -1, GETDATE()), 112))
ORDER BY h.instance_id DESC;
1.2 检查两天内,运行时间超过30分钟的Job,并按执行时间长短排序,时间2天和运行时间30分钟,都是可以调整的,可以调整为自己需要的检查范围。代码会把执行Job的名称,运行时间,平均执行时间列出来。看是否有突然变化的运行情况。
----1.2 Check Jobs With Long Duration:30minutes(can modify to other value) From Last 2 Day To Now
SELECT sj.name
, sja.start_execution_date,DATEDIFF (minute ,sja.start_execution_date,sja.stop_execution_date ) AS ExecutedMin,ja.AvgRuntimeOnSucceed/60 as AvgRuntimeOnSucceedMin
FROM msdb.dbo.sysjobactivity AS sja
INNER JOIN msdb.dbo.sysjobs AS sj ON sja.job_id = sj.job_id INNER
join
(
SELECT job_id,
AVG
((run_duration/10000 * 3600) + ((run_duration%10000)/100*60) + (run_duration%10000)%100)
+
NULLIF(0,STDEV
((run_duration/10000 * 3600) + ((run_duration%10000)/100*60) + (run_duration%10000)%100)) AS 'AvgRuntimeOnSucceed'
FROM msdb.dbo.sysjobhistory
WHERE step_id = 0 AND run_status = 1
GROUP BY job_id) ja
ON sj.job_id = ja.job_id
WHERE sja.start_execution_date IS NOT NULL --作业有开始
AND sja.stop_execution_date IS not NULL --作业结束
AND sja.start_execution_date>DATEADD(DAY,-2,GETDATE()) --作业2天内开始
and DATEDIFF (minute ,sja.start_execution_date,sja.stop_execution_date )>30
order by ExecutedMin desc
1.3 检查数据库错误日志,默认读取的是当前log,筛选的是Error开头的错误日志,可以根据需要筛选其他关键字。
----1.3 Check SQL Error Log
DROP TABLE IF EXISTS #errorLog; -- this is new syntax in SQL 2016 and later
CREATE TABLE #errorLog (LogDate DATETIME, ProcessInfo VARCHAR(64), [Text] VARCHAR(MAX));
INSERT INTO #errorLog
EXEC sp_readerrorlog
SELECT *
FROM #errorLog a
WHERE EXISTS (SELECT *
FROM #errorLog b
WHERE [Text] like 'Error:%'
AND a.LogDate = b.LogDate
AND a.ProcessInfo = b.ProcessInfo)
1.4 检查含有数据库文件的磁盘的空间大小,可以看到剩余百分比,实际大小,使用大小等。
----1.4 Check HDD Free Space
select distinct
convert(varchar(512), b.volume_mount_point) as [volume_mount_point]
, convert(varchar(512), b.logical_volume_name) as [logical_volume_name]
, convert(decimal(18,1), round(((convert(float, b.available_bytes) / convert(float, b.total_bytes)) * 100),1)) as [Drive_Free_Percent]
, convert(bigint, round(((b.available_bytes / 1024.0)/1024.0),0)) as [Drive_Free_MB]
, convert(bigint, round(((b.total_bytes / 1024.0)/1024.0),0)) as [Drive_Total_MB]
, convert(bigint, round((((b.total_bytes - b.available_bytes) / 1024.0)/1024.0),0)) as [Drive_Used_MB]
from sys.master_files as [a]
CROSS APPLY sys.dm_os_volume_stats(a.database_id, a.[file_id]) as [b]
order by volume_mount_point
1.5 检查数据库数据文件和日志文件的大小,默认排除了id为4以下的系统数据库,可以根据需要调整,只观察自己需要的数据库。
----1.5 Check DB Data And Log Size
select distinct db_name(a.database_id) as [DatabaseName],database_id
, a.name as [Logical_Name]
, convert(decimal(28,2), round(((a.size * 8.0) / 1024.00),2)) as [SizeMB]
from sys.master_files as [a]
where database_id>4
order by DatabaseName,Logical_Name
1.1代码检查从昨天到现在,SQL代理Job有没有运行失败的,会把运行失败的Job名字,步骤,运行时间,错误等级,错误原因罗列出来,方便查看。
----1.1 Check Job Fail List From Last Day To Now
SELECT j.[name],
h.step_id,
h.step_name,
h.run_date,
h.run_time,
h.sql_severity,
h.message,
h.server
FROM msdb.dbo.sysjobhistory h
INNER JOIN msdb.dbo.sysjobs j
ON h.job_id = j.job_id
INNER JOIN msdb.dbo.sysjobsteps s
ON j.job_id = s.job_id
AND h.step_id = s.step_id
WHERE h.run_status = 0 -- Failure
AND h.run_date > CONVERT(int,CONVERT(varchar(10), DATEADD(DAY, -1, GETDATE()), 112))
ORDER BY h.instance_id DESC;
1.2 检查两天内,运行时间超过30分钟的Job,并按执行时间长短排序,时间2天和运行时间30分钟,都是可以调整的,可以调整为自己需要的检查范围。代码会把执行Job的名称,运行时间,平均执行时间列出来。看是否有突然变化的运行情况。
----1.2 Check Jobs With Long Duration:30minutes(can modify to other value) From Last 2 Day To Now
SELECT sj.name
, sja.start_execution_date,DATEDIFF (minute ,sja.start_execution_date,sja.stop_execution_date ) AS ExecutedMin,ja.AvgRuntimeOnSucceed/60 as AvgRuntimeOnSucceedMin
FROM msdb.dbo.sysjobactivity AS sja
INNER JOIN msdb.dbo.sysjobs AS sj ON sja.job_id = sj.job_id INNER
join
(
SELECT job_id,
AVG
((run_duration/10000 * 3600) + ((run_duration%10000)/100*60) + (run_duration%10000)%100)
+
NULLIF(0,STDEV
((run_duration/10000 * 3600) + ((run_duration%10000)/100*60) + (run_duration%10000)%100)) AS 'AvgRuntimeOnSucceed'
FROM msdb.dbo.sysjobhistory
WHERE step_id = 0 AND run_status = 1
GROUP BY job_id) ja
ON sj.job_id = ja.job_id
WHERE sja.start_execution_date IS NOT NULL --作业有开始
AND sja.stop_execution_date IS not NULL --作业结束
AND sja.start_execution_date>DATEADD(DAY,-2,GETDATE()) --作业2天内开始
and DATEDIFF (minute ,sja.start_execution_date,sja.stop_execution_date )>30
order by ExecutedMin desc
1.3 检查数据库错误日志,默认读取的是当前log,筛选的是Error开头的错误日志,可以根据需要筛选其他关键字。
----1.3 Check SQL Error Log
DROP TABLE IF EXISTS #errorLog; -- this is new syntax in SQL 2016 and later
CREATE TABLE #errorLog (LogDate DATETIME, ProcessInfo VARCHAR(64), [Text] VARCHAR(MAX));
INSERT INTO #errorLog
EXEC sp_readerrorlog
SELECT *
FROM #errorLog a
WHERE EXISTS (SELECT *
FROM #errorLog b
WHERE [Text] like 'Error:%'
AND a.LogDate = b.LogDate
AND a.ProcessInfo = b.ProcessInfo)
1.4 检查含有数据库文件的磁盘的空间大小,可以看到剩余百分比,实际大小,使用大小等。
----1.4 Check HDD Free Space
select distinct
convert(varchar(512), b.volume_mount_point) as [volume_mount_point]
, convert(varchar(512), b.logical_volume_name) as [logical_volume_name]
, convert(decimal(18,1), round(((convert(float, b.available_bytes) / convert(float, b.total_bytes)) * 100),1)) as [Drive_Free_Percent]
, convert(bigint, round(((b.available_bytes / 1024.0)/1024.0),0)) as [Drive_Free_MB]
, convert(bigint, round(((b.total_bytes / 1024.0)/1024.0),0)) as [Drive_Total_MB]
, convert(bigint, round((((b.total_bytes - b.available_bytes) / 1024.0)/1024.0),0)) as [Drive_Used_MB]
from sys.master_files as [a]
CROSS APPLY sys.dm_os_volume_stats(a.database_id, a.[file_id]) as [b]
order by volume_mount_point
1.5 检查数据库数据文件和日志文件的大小,默认排除了id为4以下的系统数据库,可以根据需要调整,只观察自己需要的数据库。
----1.5 Check DB Data And Log Size
select distinct db_name(a.database_id) as [DatabaseName],database_id
, a.name as [Logical_Name]
, convert(decimal(28,2), round(((a.size * 8.0) / 1024.00),2)) as [SizeMB]
from sys.master_files as [a]
where database_id>4
order by DatabaseName,Logical_Name
SQL Server数据库日常检查的更多相关文章
- .NET跨平台之旅:升级至ASP.NET 5 RC1,Linux上访问SQL Server数据库
今天微软正式发布了ASP.NET 5 RC1(详见Announcing ASP.NET 5 Release Candidate 1),.NET跨平台迈出了关键一步. 紧跟这次RC1的发布,我们成功地将 ...
- SQL Server数据库定时自动备份
SQL Server 数据库定时自动备份[转] 在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求 ...
- C#操作access和SQL server数据库代码实例
在C#的学习中,操作数据库是比较常用的技术,而access和sql server 数据库的操作却有着不同.那么,有哪些不同呢? 首先,需要引用不同的类.因为有着不同的数据引擎. access:usin ...
- python 使用pymssql连接sql server数据库
python 使用pymssql连接sql server数据库 #coding=utf-8 #!/usr/bin/env python#------------------------------ ...
- NetBeans连接SQL server数据库教程
不废话,直接开始 1.下载sqljdbc.jar 可以从微软中国官方网站下载 SQLJDBC微软中国 笔者提供一个网盘链接Sqljdbc.jar 4个压缩包视版本选择,SQL 2012 用sqljdb ...
- SQL Server数据库备份的镜像
SQL Server数据库备份的镜像 一个完整备份可以分开镜像 USE master GO BACKUP DATABASE [testdatabase] TO DISK = N'C:\testdata ...
- SQL Server数据库镜像的页面自动修复原理
SQL Server数据库镜像的页面自动修复原理 主库页面损坏 镜像库页面损坏 LSN用来保证事务的时序 LSN保存在每个数据页面的页头 在同一台机器,内存中的数据页和磁盘中的数据页保持同步依靠的是数 ...
- Sql Server数据库备份和恢复:原理篇
本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...
- SQL Server 数据库分离与附加
一.概述 SQL Server提供了“分离/附加”数据库.“备份/还原”数据库.复制数据库等多种数据库的备份和恢复方法.这里介绍一种学习中常用的“分离/附加”方法,类似于大家熟悉的“文件拷贝”方法,即 ...
- 在易语言中调用MS SQL SERVER数据库存储过程方法总结
Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接返回(return)一个值,通过output ...
随机推荐
- SQLi
点进去发现是个空白网页,查看源码发现一个login.php的文件,话不多说,直接选择复制然后访问 Url: http://5865f5830d034083b9bbc0dafc6b60a5d5d2309 ...
- 【SQL】DML语句-SQL更新与删除:单表更新删除与连表更新删除语法
〇.概述 1.资料 sql连表删除:http://www.lanxinbase.com/?tag=sql%E8%BF%9E%E8%A1%A8%E5%88%A0%E9%99%A4 sql实现两表关联更新 ...
- 【Hadoop学习】上:组成介绍、生态体系、环境准备、不同运行模式测试
目录: 入门(上) HDFS(中) MapReduce&Yarn(下) 优化(补充) 一.大数据概述 概念 特点:VVVV 应用场景 二.Hadoop到大数据生态 1.Hadoop生态圈.发展 ...
- 详解 Redis 中 big keys 发现和解决
在使用 Redis 时,可能会出现请求响应慢.网络卡顿.数据丢失的情况.排查问题的时候,发现是 big keys 的问题. 什么是 big keys 在 Redis 中,一个字符串类型最大可以达到 5 ...
- 使用Java刷评论为平台引流的经历
场景:需要在一网站中批量评论留言. 分析接口: 列表接口获取idList,返回的是json数据直接用FastJson转就可以,如果返回的是HTML片段,则需要使用Jsoup进行提取,值得一学,常用于爬 ...
- linux安装influxdb和chronograf
安装环境: Alibaba Cloud Linux 安装influxdb 1.下载.安装 wget https://dl.influxdata.com/influxdb/releases/influx ...
- 实现 .Net 7 下的数据库定时检查
在软件开发过程中,有时候我们需要定时地检查数据库中的数据,并在发现新增数据时触发一个动作.为了实现这个需求,我们在 .Net 7 下进行一次简单的演示. PeriodicTimer .Net 6 中新 ...
- Python实验报告(第10章)
实验10:文件及目录操作 一.实验目的和要求 1.掌握基本文件操作(创建.打开.关闭.写入): 2.掌握目录操作的基本操作(创建.删除.遍历): 3.了解高级文件操作(删除文件.获取文件基本信息). ...
- MQ系列10:如何保证消息幂等性消费
MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的发送模式 MQ系 ...
- P5380 [THUPC2019]鸭棋
题面 查看题面 题目背景 鸭棋是一种风靡鸭子界的棋类游戏.事实上,它与中国象棋有一些相似之处,但规则不尽相同.在这里,我们将为你介绍鸭棋的规则. 鸭棋在一个 \(10\times 9\)(\(10\) ...