Files
yunhai.netcore.tool/sqlscript/create-sys-operation-log-table.sql
T
wanghu 8c840aa933
build / build-push (push) Failing after 40s
git
2026-09-02 10:44:33 +08:00

56 lines
3.5 KiB
Transact-SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ============================================================
-- 系统审计日志表(sys_operation_log)
-- 对应实体:YhCore.Entity.SysOperationLog(EF Core,OnModelCreating ToTable 映射)
-- 对应 Java:bschclassmanage 的 entity.SysOperationLog / sqlscript/sys_operation_log.sql
-- 用途:SysOperationLogFilter 全量记录 HTTP 接口日志 / CleanupLogJob 30 天清理
-- 说明:本表取代旧业务操作日志表 OperationLogRecord(旧表无数据,直接删除)
-- 数据库:SQL Server(EduCloudDocPrint)
-- ============================================================
-- 1) 清理旧业务操作日志表(OperationLogRecord,已被 sys_operation_log 取代)
IF OBJECT_ID(N'[dbo].[OperationLogRecord]', N'U') IS NOT NULL
BEGIN
DROP TABLE [dbo].[OperationLogRecord];
PRINT 'Legacy OperationLogRecord table dropped.';
END
-- 2) 创建审计日志表(幂等)
IF NOT EXISTS (SELECT 1 FROM sys.tables WHERE name = 'sys_operation_log')
BEGIN
CREATE TABLE [dbo].[sys_operation_log] (
[Id] BIGINT IDENTITY(1,1) NOT NULL CONSTRAINT [PK_sys_operation_log] PRIMARY KEY,
[LogLevel] TINYINT NOT NULL, -- 1-重要(删除) 2-次要(新增/编辑) 3-一般(查询)
[OperationType] NVARCHAR(16) NOT NULL, -- DELETE/CREATE/UPDATE/QUERY
[UserId] INT NULL, -- 操作人 ID
[UserName] NVARCHAR(64) NULL, -- 操作人姓名
[SchId] INT NULL, -- 学校 ID(多校隔离)
[RequestIp] NVARCHAR(64) NOT NULL, -- 客户端 IP
[RequestUri] NVARCHAR(512) NOT NULL, -- 请求 URI
[RequestMethod] NVARCHAR(16) NOT NULL, -- HTTP 方法
[ClassMethod] NVARCHAR(512) NOT NULL, -- 类名.方法名
[RequestParams] NVARCHAR(MAX) NULL, -- 请求参数(JSON,截断)
[ResponseData] VARBINARY(MAX) NULL, -- GZIP 压缩后的响应 JSON
[StatusCode] INT NOT NULL, -- 业务状态码:0 成功 / 非 0 失败
[CostTime] BIGINT NOT NULL, -- 耗时(ms)
[UserAgent] NVARCHAR(512) NULL,
[ErrorMsg] NVARCHAR(MAX) NULL, -- 异常信息(截断 8000)
[RetryCount] INT NULL DEFAULT 0, -- 重试次数(对齐 Java 双轨字段,.NET 暂不写入)
[LastRetryStatus] INT NULL, -- 上次重试状态:1 成功 / 0 失败
[LastRetryTime] DATETIME NULL, -- 上次重试时间
[CreateTime] DATETIME NOT NULL -- 记录时间
);
-- 查询/清理索引(对齐 Java idx_sol_*)
CREATE INDEX [IX_sol_CreateTime] ON [dbo].[sys_operation_log] ([CreateTime]);
CREATE INDEX [IX_sol_UserId_Time] ON [dbo].[sys_operation_log] ([UserId], [CreateTime]);
CREATE INDEX [IX_sol_SchId_Time] ON [dbo].[sys_operation_log] ([SchId], [CreateTime]);
CREATE INDEX [IX_sol_Uri_Time] ON [dbo].[sys_operation_log] ([RequestUri], [CreateTime]);
CREATE INDEX [IX_sol_Level_Time] ON [dbo].[sys_operation_log] ([LogLevel], [CreateTime]);
PRINT 'sys_operation_log table created.';
END
ELSE
BEGIN
PRINT 'sys_operation_log table already exists, skip.';
END