56 lines
3.5 KiB
Transact-SQL
56 lines
3.5 KiB
Transact-SQL
-- ============================================================
|
||
-- 系统审计日志表(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
|