存储过程的监控表DBA_proc_log
2017-06-29 14:34
435 查看
----------------------- 创建监控表 -------------------------------- --创建存储过程(普通SQL也可以,但要改程序了) 记录表 IF OBJECT_ID('[dbo].[DBA_proc_log]') IS NOT NULL DROP TABLE [dbo].[DBA_proc_log] GO CREATE TABLE [dbo].[DBA_proc_log]( [logId] [bigint] IDENTITY(1,1) NOT NULL, [procName] [varchar](200) NOT NULL, [beginTime] [datetime] NOT NULL, [endTime] [datetime] NOT NULL, [elapsedSeconds] AS (case when [endTime]<[beginTime] then (-1) else datediff(second,[beginTime],[endTime]) end), [errMsg] [nvarchar](max) NOT NULL, [remark] [nvarchar](max) NOT NULL, [succeeded] AS (case when [endTime]<[beginTime] OR [errMsg]<>'' then (0) else (1) end), [checked] [bit] NOT NULL, PRIMARY KEY CLUSTERED ( [logId] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] go ALTER TABLE [dbo].[DBA_proc_log] ADD DEFAULT (getdate()) FOR [beginTime] ALTER TABLE [dbo].[DBA_proc_log] ADD DEFAULT ('1900-01-01') FOR [endTime] ALTER TABLE [dbo].[DBA_proc_log] ADD DEFAULT ('') FOR [errMsg] ALTER TABLE [dbo].[DBA_proc_log] ADD DEFAULT ('') FOR [remark] ALTER TABLE [dbo].[DBA_proc_log] ADD DEFAULT ((0)) FOR [checked] GO ------------------------- 如何添加到存储过程 ---------------------------- --存储过程的开始部分添加 DECLARE @logId BIGINT INSERT INTO [dbo].[DBA_proc_log]([procName]) VALUES('Proc_User_Online_GetList') --按实际的存储过程名 SET @logId=@@IDENTITY; --存储过程中间部分 --。。。 --存储过程结尾部分 UPDATE [dbo].[DBA_proc_log] SET endTime=GETDATE() WHERE logId=@logId ----------------------- 查看两天以来,存储过程以小时分组的执行情况 -------------------------------- ;with t as ( select procName, Convert(char(13),beginTime,120) as timeHour ,avg(datediff(ms,beginTime,endTime)) as [avg_ms] ,min(datediff(ms,beginTime,endTime)) as [min_ms] ,max(datediff(ms,beginTime,endTime)) as [max_ms] ,count(1) as cnt from dba_proc_log with(nolock) where beginTime>dateadd(day,-1, convert(char(10),getdate(),120)) and procName='Proc_User_Online_GetList' and datepart(hour, beginTime) between 8 and 18 and elapsedSeconds>-1 group by procName,Convert(char(13),beginTime,120) ) select *, (select top 1 convert(char(5),beginTime,14) from dba_proc_log as b with(nolock) where datediff(ms,b.beginTime,b.endTime)=t.max_ms and Convert(char(13),b.beginTime,120)=t.timeHour ) as maxTimeSeg from t order by left(timeHour,10) desc,[max_ms] desc
相关文章推荐
- MSSQL监控数据库的DDL操作(创建,修改,删除存储过程,创建,修改,删除表等)
- SQL Server中使用Trigger监控存储过程更改脚本实例
- 第三章——使用系统函数、存储过程和DBCC SQLPERF命令来监控SQLServer(2)
- SQLDBA 经常会用到的系统存储过程
- 第三章——使用系统函数、存储过程和DBCC SQLPERF命令来监控SQLServer(1)
- PROC 存储过程 二
- SQL SERVER DBA 只给某用户开通 对存储过程的readonly权限
- DBA工具——DMV——通过sys.dm_exec_procedure_stats查看存储过程执行信息
- 监控磁盘存储过程
- 使用TFDStoredProc没填入存储过程名的一些坑
- 第三章——使用系统函数、存储过程和DBCC SQLPERF命令来监控SQLServer(3)
- 在存储过程中查询dba_tables表的时候,需要赋权限给该用户
- 走向DBA[MSSQL篇] 针对大表 设计高效的存储过程【原理篇】 附最差性能sql语句进化过程客串
- MySQL新建存储过程出现:ERROR 1558 (HY000): Column count of mysql.proc is wrong. Expected 20, found 16. Create
- DBA工具——DMV——通过sys.dm_exec_procedure_stats查看存储过程执行信息
- SqlServer Bug:扩展存储过程一直运行出现等待类型PREEMPTIVE_OS_GETPROCADDRESS
- mysql5.0.22-log的内核数据库mysql误用mysql5.1.26-rc,引起存储过程与函数无法导入
- 走向DBA[MSSQL篇] 针对大表 设计高效的存储过程【原理篇】 附最差性能sql语句进化过程客串
- DBA工具——DMV——通过sys.dm_exec_procedure_stats查看存储过程执行信息
- 第三章——使用系统函数、存储过程和DBCC SQLPERF命令来监控SQLServer(2)