首页 > 数据库 >SQL SERVER 存储过程执行日志记录方法(有案例)

SQL SERVER 存储过程执行日志记录方法(有案例)

时间:2023-10-05 20:31:40浏览次数:42  
标签:存储 记录 SERVER LogId SQL 日志 执行 过程


查询历史执行总体情况


  1. SELECT TOP 100 db_name(d.database_id) as DBName,
  2. s.name as 存储名称,
  3. s.type_desc as 存储类型,
  4. d.cached_time as SP添加到缓存的时间,
  5. d.last_execution_time as 上次执行SP的时间,
  6. d.last_elapsed_time as [上次执行SP所用的时间(μs)],
  7. d.total_elapsed_time as [完成此SP的执行所用的总时间(μs)],
  8. d.total_elapsed_time/d.execution_count as [平均执行时间(μs)],
  9. d.execution_count as 自上次编译以来所执行的次数
  10. FROM SYS.procedures S JOIN SYS.dm_exec_procedure_stats D
  11. ON S.object_id=D.object_id
  12. WHERE S.NAME='SP_Name'
  13. ORDER BY D.total_elapsed_time/D.execution_count DESC

μs/1000000=S

上面总统执行情况只能反馈一个整体状态,如果某个时间段执行较慢,被平均后则体现不到波动,所以需求用到下面的方法,记录到每次的执行情况。

流程概述

整个流程可以分为以下几个步骤:

  1. 创建一个存储过程执行日志表。
  2. 在需要记录日志的存储过程中添加日志记录代码。
  3. 在存储过程执行前插入一条开始执行日志。
  4. 在存储过程执行完成后更新执行日志的状态和结束时间。
  5. 查询日志表以查看执行日志。

下面我们将逐步实现这些步骤。

步骤1:创建存储过程执行日志表

首先,我们需要创建一个用于记录存储过程执行日志的表。可以使用以下代码来创建一个简单的日志表:

CREATE TABLE dbo.StoredProcedureLog
(
    LogId INT IDENTITY(1,1) PRIMARY KEY,
    ProcedureName NVARCHAR(100),
    StartTime DATETIME,
    EndTime DATETIME,
    
    Status INT
)

这个日志表包含了以下几个字段:

  • LogId: 一个自增的唯一标识符,用于标识每个日志记录。
  • ProcedureName: 存储过程的名称。
  • StartTime: 存储过程执行的开始时间。
  • EndTime: 存储过程执行的结束时间。
  • Status: 存储过程执行的状态,可以自定义状态码来表示成功或失败等。

步骤2:添加日志记录代码

在需要记录日志的存储过程中,我们需要添加一些代码来记录执行日志。可以使用以下代码来在存储过程中添加日志记录代码:

DECLARE @LogId INT

-- 在存储过程开始执行前插入一条开始执行的日志记录
INSERT INTO dbo.StoredProcedureLog (ProcedureName, StartTime, Status)
VALUES ('YourProcedureName', GETDATE(), 0)

-- 获取刚插入的日志记录的LogId
SELECT @LogId = SCOPE_IDENTITY()

-- 执行存储过程的代码
-- ...

-- 在存储过程执行完成后更新日志记录的状态和结束时间
UPDATE dbo.StoredProcedureLog
SET EndTime = GETDATE(),
    Status = 1
WHERE LogId = @LogId

在上面的代码中,我们首先通过插入一条开始执行的日志记录来记录存储过程的开始时间和状态。然后,我们获取刚插入的日志记录的LogId,以便在执行完成后更新日志记录的状态和结束时间。

步骤3:查询存储过程执行日志

在存储过程执行完毕后,我们可以查询存储过程执行日志表来查看执行日志。可以使用以下代码来查询存储过程执行日志:

SELECT *
FROM dbo.StoredProcedureLog

这个查询将返回存储过程执行日志表中的所有记录,你可以根据需要添加查询条件来过滤结果。



示例:

SQL SERVER 存储过程执行日志记录方法(有案例)_存储过程执行历史记录


SQL SERVER 存储过程执行日志记录方法(有案例)_日志记录_02

SQL SERVER 存储过程执行日志记录方法(有案例)_存储过程执行历史记录_03

标签:存储,记录,SERVER,LogId,SQL,日志,执行,过程
From: https://blog.51cto.com/u_2333657/7717336

相关文章

  • Webserver报错处理
    启动web-server不成功,会报错误:java.net.ConnectException:Connectionrefused:nofurtherinformationatjava.base/sun.nio.ch.Net.pollConnect(NativeMethod)~[na:na]atjava.base/sun.nio.ch.Net.pollConnectNow(Net.java:672)~[na:na]atjava.base/sun.nio.ch.Sock......
  • MySQL知识点归纳
    1.索引  索引按照物理实现方式,可以分为两种:聚簇(聚集)和非聚簇(非聚集)索引。也把非聚集索引称为二级索引或者辅助索引。1.1聚簇索引  聚簇索引不是一种单独的索引类型,而是一种数据存储方式,即索引的存储方式(所有的用户记录都存储在了叶子节点),所以聚簇索引:索引即数据,数据即索......
  • mysql命令行执行sql文件
    方法一:mysql命令,直接在服务器上执行mysql–u用户名–p密码–D数据库<【sql脚本文件路径全名】例如:mysql-uroot-proot-Dtest</tmp/test.sql方法二:source命令,登录mysqlclient执行source【sql脚本文件路径全名】例如:source/tmp/test.sql......
  • mysql
    在命令提示符中先输入cdC:\ProgramFiles\MySQL\MySQLServer8.0\bin打开目录,然后输入mysql-hlocalhost-uroot-p登录数据库,再输入数据库密码6km,登录成功查看信息输入status命令可以查看MySQL的版本信息 ......
  • SqlSession与SqlSessionFactory
    2.2.3SqlSessionSqlSession是MyBatis框架中极其重要的接口。SqlSession类似于JDBC中的Connection,它代表MyBatis和数据库的一次会话,主要用于执行持久化操作。SqlSession对象底层封装了JDBC连接,所以可以直接使用SqlSession对象执行已映射的SQL语句。SqlSession中包含了所有执行SQL......
  • PLSQL 导入EXCEL数据
    导入前注意事项: 确认电脑的驱动安装,因之前PLSQL客户端安装的64位,而excel驱动安装的是32位,导致ODBC导入器一直无法显示对应的驱动信息,尝试安装64位excel驱动,但因与office版本有关,所以无法安装成功,后不得不变更PLSQL为32位,变更后驱动正常显示以下为安装步骤: 打......
  • 有关于Mysql的简单问题及示例(增删改查 一对一 多对多 左外连接 右外链接)
    Mysql1、请自行设计表并针对该表练习最基本的增删改查且写出示例代码建立表格class其中有属性nameidgenderinterest表格建立完成向表中插入数据插入数据完成尝试删除表中id=101的数据删除数据成功尝试修改表中id为102的数据修改成功2、请问什么是一对多?请自......
  • SQL转义字符和通配符
    1.使用  ESCAPE  关键字,定义转义符。在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。例如,要搜索在任意位置包含字符串  5%  的字符串,请使用:    WHERE  ColumnA  LIKE  '%5/%%'  ESCAPE  '/' 2.ESCAPE  'escape_character'  ......
  • MySQL 的 InnoDB 存储引擎简介
    MySQL是世界上最流行的开源关系型数据库管理系统之一,而其中的存储引擎则是其关键组成部分之一。InnoDB存储引擎在MySQL中扮演了重要角色,提供了许多高级功能和性能优化,适用于各种应用程序和工作负载。本文将深入介绍InnoDB存储引擎的各个方面,以帮助您更好地理解它的特性和优......
  • MySQL-8.0.18的搭建
    一、安装mysql-8.0.18(1)下载安装包#下载前先卸载mariadb的一些东西yumremove-ymariadb*#然后下载安装包mkdir/usr/local/soft&&cd/usr/local/softwget-chttps://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz(2)......