【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】4.3.3
【问题描述】存储过程执行未结束,查看没有正在执行的SQL,如何查看存储过程是否被中断及原因
可以查一下information_schema.events里面有没有。或者给存储过程自定义一下日志输出记录:如创建个日志表。
步骤 1: 创建日志表
首先,我们需要创建一个表来存储日志信息。例如,可以创建一个名为 LogTable
的表:
CREATE TABLE LogTable (
LogID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
LogDate DATETIME NOT NULL DEFAULT GETDATE(),
LogLevel VARCHAR(50) NOT NULL,
LogMessage NVARCHAR(MAX) NOT NULL
);
步骤 2: 创建存储过程
然后,创建一个存储过程,用于将日志信息插入到 LogTable
表中:
CREATE PROCEDURE InsertLog
@LogLevel VARCHAR(50),
@LogMessage NVARCHAR(MAX)
AS
BEGIN
INSERT INTO LogTable (LogLevel, LogMessage)
VALUES (@LogLevel, @LogMessage);
END;
步骤 3: 调用存储过程记录日志
现在,你可以在其他存储过程中或应用程序中调用 InsertLog
存储过程来记录日志。
示例:记录错误日志
CREATE PROCEDURE ExampleProcedure
AS
BEGIN
BEGIN TRY
-- 这里是你的业务逻辑
-- 例如,可能会发生错误的操作
DECLARE @x INT = 1 / 0; -- 故意除以零,触发错误
END TRY
BEGIN CATCH
-- 在这里记录错误日志
EXEC InsertLog @LogLevel = 'Error', @LogMessage = ERROR_MESSAGE();
END CATCH;
END;
存储过程有记录日志,没有异常,使用的LINUX定时调起的,执行到一半调用过程的会话就没有了
日志有么 发一份看看
你好,目前问题还存在么 发一份日志看看
问题解决了,原因是千万级别的会话临时表很占内存,OBE-00600 -4013内存不足闪退了,这个报错正常异常不抛出所以之前未发现原因