存储过程日志表

IF OBJECT_ID('dbo.DBA_proc_log') IS NULL
BEGIN
    CREATE TABLE dbo.DBA_proc_log(
        logId BIGINT IDENTITY(1,1) PRIMARY KEY ,
        procName VARCHAR(50) NOT NULL,
        beginTime DATETIME NOT NULL DEFAULT(GETDATE()),
        endTime DATETIME NOT NULL DEFAULT('1900-01-01'),
        elapsedSeconds AS CASE WHEN endTime<beginTime THEN -1 ELSE DATEDIFF(second,beginTime,endTime) END,
        errMsg NVARCHAR(MAX) NOT NULL DEFAULT(''),
        succeeded AS CASE WHEN endTime<beginTime OR errMsg!='' THEN 0 ELSE 1 END,
        checked BIT NOT NULL DEFAULT(0)
    )
END

--示例存储过程
CREATE PROC proc_test
AS
BEGIN
    SET NOCOUNT ON
    --插入日志
    DECLARE @logId BIGINT
    INSERT INTO dbo.DBA_proc_log (procName) VALUES ('proc_test')    --注意修改为当前存储过程名
    SET @logId=@@IDENTITY;
    
    --存储过程原执行部分
    
    
    --设置日志结束
    UPDATE dbo.DBA_proc_log SET endTime=GETDATE() WHERE logId=@logId
END
GO

EXEC proc_test

SELECT * FROM dbo.DBA_proc_log AS dpl
--------------------- 
作者:吉普赛的歌 
来源:CSDN 
原文:https://blog.csdn.net/yenange/article/details/62227962 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL 存储过程日志记录可以通过以下两种方式实现: 1. 使用 MySQL 内置的日志功能 MySQL 内置了多种日志记录功能,其中包括 general log 和 slow query log。可以将这些日志功能用于存储过程日志记录。 - general log:记录 MySQL 服务器接收到的每个 SQL 语句,包括存储过程的执行语句。可以通过修改 MySQL 配置文件中的 `general_log` 参数来开启或关闭此功能。开启后,日志会记录在 MySQL 的数据目录下的 `hostname.log` 文件中。 - slow query log:记录执行时间超过指定阈值的 SQL 语句,包括存储过程的执行语句。可以通过修改 MySQL 配置文件中的 `slow_query_log` 参数来开启或关闭此功能。开启后,日志会记录在 MySQL 的数据目录下的 `hostname-slow.log` 文件中。 2. 在存储过程中添加日志记录代码 在存储过程的逻辑代码中添加日志记录代码,可以将存储过程的执行情况记录到指定的文件中。 例如,在存储过程中添加以下代码: ```sql CREATE PROCEDURE my_procedure() BEGIN DECLARE log_message VARCHAR(100); SET log_message = CONCAT('my_procedure start at: ', NOW()); INSERT INTO log_table(message) VALUES(log_message); -- 存储过程的逻辑代码 SET log_message = CONCAT('my_procedure end at: ', NOW()); INSERT INTO log_table(message) VALUES(log_message); END; ``` 在上述代码中,我们定义了一个 `log_message` 变量,用于存储日志信息。在存储过程的开始和结束位置,我们将日志信息写入到 `log_table` 数据中。 需要注意的是,为了避免日志记录代码对存储过程的执行性能产生影响,应该将日志记录代码放在存储过程的开始和结束位置,而非每个逻辑语句的前后。此外,还需要确保日志的结构和存储方式能够满足需求并不会影响 MySQL 的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值