1.1代码检查从昨天到现在,SQL代理Job有没有运行失败的,会把运行失败的Job名字,步骤,运行时间,错误等级,错误原因罗列出来,方便查看。

----1.1  Check Job Fail List From Last Day To NowSELECT  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 NowSELECT sj.name   , sja.start_execution_date,DATEDIFF (minute ,sja.start_execution_date,sja.stop_execution_date ) AS ExecutedMin,ja.AvgRuntimeOnSucceed/60 as AvgRuntimeOnSucceedMinFROM msdb.dbo.sysjobactivity AS sjaINNER JOIN msdb.dbo.sysjobs AS sj ON sja.job_id = sj.job_id INNERjoin(    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_idWHERE 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 )>30order by ExecutedMin desc

1.3 检查数据库错误日志,默认读取的是当前log,筛选的是Error开头的错误日志,可以根据需要筛选其他关键字。

----1.3  Check SQL Error LogDROP 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 #errorLogEXEC sp_readerrorlog

SELECT * FROM #errorLog aWHERE 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 Spaceselect 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 Sizeselect 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>4order by  DatabaseName,Logical_Name

1.1代码检查从昨天到现在,SQL代理Job有没有运行失败的,会把运行失败的Job名字,步骤,运行时间,错误等级,错误原因罗列出来,方便查看。

----1.1  Check Job Fail List From Last Day To NowSELECT  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 NowSELECT sj.name   , sja.start_execution_date,DATEDIFF (minute ,sja.start_execution_date,sja.stop_execution_date ) AS ExecutedMin,ja.AvgRuntimeOnSucceed/60 as AvgRuntimeOnSucceedMinFROM msdb.dbo.sysjobactivity AS sjaINNER JOIN msdb.dbo.sysjobs AS sj ON sja.job_id = sj.job_id INNERjoin(    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_idWHERE 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 )>30order by ExecutedMin desc

1.3 检查数据库错误日志,默认读取的是当前log,筛选的是Error开头的错误日志,可以根据需要筛选其他关键字。

----1.3  Check SQL Error LogDROP 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 #errorLogEXEC sp_readerrorlog

SELECT * FROM #errorLog aWHERE 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 Spaceselect 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 Sizeselect 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>4order by  DatabaseName,Logical_Name

SQL Server数据库日常检查的更多相关文章

  1. .NET跨平台之旅:升级至ASP.NET 5 RC1,Linux上访问SQL Server数据库

    今天微软正式发布了ASP.NET 5 RC1(详见Announcing ASP.NET 5 Release Candidate 1),.NET跨平台迈出了关键一步. 紧跟这次RC1的发布,我们成功地将 ...

  2. SQL Server数据库定时自动备份

    SQL Server 数据库定时自动备份[转]   在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求 ...

  3. C#操作access和SQL server数据库代码实例

    在C#的学习中,操作数据库是比较常用的技术,而access和sql server 数据库的操作却有着不同.那么,有哪些不同呢? 首先,需要引用不同的类.因为有着不同的数据引擎. access:usin ...

  4. python 使用pymssql连接sql server数据库

    python 使用pymssql连接sql server数据库   #coding=utf-8 #!/usr/bin/env python#------------------------------ ...

  5. NetBeans连接SQL server数据库教程

    不废话,直接开始 1.下载sqljdbc.jar 可以从微软中国官方网站下载 SQLJDBC微软中国 笔者提供一个网盘链接Sqljdbc.jar 4个压缩包视版本选择,SQL 2012 用sqljdb ...

  6. SQL Server数据库备份的镜像

    SQL Server数据库备份的镜像 一个完整备份可以分开镜像 USE master GO BACKUP DATABASE [testdatabase] TO DISK = N'C:\testdata ...

  7. SQL Server数据库镜像的页面自动修复原理

    SQL Server数据库镜像的页面自动修复原理 主库页面损坏 镜像库页面损坏 LSN用来保证事务的时序 LSN保存在每个数据页面的页头 在同一台机器,内存中的数据页和磁盘中的数据页保持同步依靠的是数 ...

  8. Sql Server数据库备份和恢复:原理篇

    本文与您探讨为什么Sql Server有完整备份.差异备份和事务日志备份三种备份方式,以及为什么数据库又有简单模式.完整模式和大容量日志模式这三种恢复模式.本文内容适用于2005以上所有版本的Sql ...

  9. SQL Server 数据库分离与附加

    一.概述 SQL Server提供了“分离/附加”数据库.“备份/还原”数据库.复制数据库等多种数据库的备份和恢复方法.这里介绍一种学习中常用的“分离/附加”方法,类似于大家熟悉的“文件拷贝”方法,即 ...

  10. 在易语言中调用MS SQL SERVER数据库存储过程方法总结

    Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接返回(return)一个值,通过output ...

随机推荐

  1. 【数据库】union和union all合并结果操作

    一.含义 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相似的数据类型.同时,每条 SELECT 语句中的 ...

  2. Scanner例题讲解

    Scanner例题讲解 题:输入多个平均数,求其总和与平均数;每输入一个数用回车确认,通过输入非数字来结束输入并输出执行结果  public class Demo05 {     //输入多个平均数, ...

  3. java中使用apache poi 读取 doc,docx,ppt,pptx,xls,xlsx,txt,csv格式的文件示例代码

    java使用apache poi 读取 doc,docx,ppt,pptx,xls,xlsx,txt,csv格式的文件示例代码 1.maven依赖添加 在 pom 文件中添加如下依赖 <depe ...

  4. Chaos 测试下的若干 NebulaGraph Raft 问题分析

    Raft 是一种广泛使用的分布式共识算法.NebulaGraph 底层采用 Raft 算法实现 metad 和 storaged 的分布式功能.Raft 算法使 NebulaGraph 中的 meta ...

  5. IIS服务没有Windows身份验证

    解决方法: 1.打开 C:\Windows\servicing\Packages,查找文件Microsoft-Windows-IIS-WebServer-AddOn-2-Package~31bf385 ...

  6. 使用浏览器inspect调试app

    使用浏览器inspect调试app 在开发混合项目的过程中,常常需要在app环境排查问题,接口可以使用fiddler等工具来抓包,但是js错误就不好抓包了,这里介绍一种调试工具-浏览器. 1.调试过程 ...

  7. js 中常用函数汇总(含示例)

    〇.前言 js 在日常开发中还是比较常用的,本文将常用的 js 方法简单汇总一下,希望对你我有一点帮助. 一.重复 / 延迟操作 1.设置固定时间间隔,重复执行(setInterval(funcRef ...

  8. AVM 拖动组件 movable-view 介绍

    应用开发中拖动功能是比较常见的 ,如滑动解锁,滑动验证码,实现一些小游戏,少儿编程中常见. avm.js 是多端开发框架,一套代码可同时编译为APP .小程序.h5. avm 框架中实现拖动功能非常简 ...

  9. 虚假新闻检测(CADM)《Unsupervised Domain Adaptation for COVID-19 Information Service with Contrastive Adversarial Domain Mixup》

    论文信息 论文标题:Unsupervised Domain Adaptation for COVID-19 Information Service with Contrastive Adversari ...

  10. [OpenCV实战]45 基于OpenCV实现图像哈希算法

    目前有许多算法来衡量两幅图像的相似性,本文主要介绍在工程领域最常用的图像相似性算法评价算法:图像哈希算法(img hash).图像哈希算法通过获取图像的哈希值并比较两幅图像的哈希值的汉明距离来衡量两幅 ...