用户反映,系统操作日志会使用数据库快速增大,情况可参考下图,
问题分析,整个系统每个页面,都有写记录用户操作代码,修改或禁用这个代码,看来是不可能的。
在原有系统参数表添加一个选项,可以让管理员可选项,“是否启用操作日志”。
这样子,就可以更改操作记录的存储过程,
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
SET
ANSI_NULLS
ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [ dbo ] . [ usp_OperationLog_Insert ]
(
@UsersId INT ,
@Site NVARCHAR ( 1000 ),
@Type NVARCHAR ( 30 ),
@TransactionContent NVARCHAR ( 1000 ),
@State BIT ,
@Info NVARCHAR ( 2000 )
)
AS
-- 修改部分,添加下面两句
DECLARE @IsEnableLog BIT
SET @IsEnableLog = ( SELECT [ Enable ] FROM [ dbo ] . [ sysParams ] WHERE [ ID ] = 23 AND [ ParamName ] = ' 是否启用操作日志 ' )
BEGIN TRANSACTION
IF @IsEnableLog = 1 -- 判断是否启用
INSERT INTO [ dbo ] . [ OperationLog ] (UsersId, [ OperationTime ] , [ Site ] , [ Type ] , [ TransactionContent ] , [ State ] , [ Info ] ) VALUES ( @UsersId , GETDATE (), @Site , @Type , @TransactionContent , @State , @Info )
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
END
COMMIT TRANSACTION
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [ dbo ] . [ usp_OperationLog_Insert ]
(
@UsersId INT ,
@Site NVARCHAR ( 1000 ),
@Type NVARCHAR ( 30 ),
@TransactionContent NVARCHAR ( 1000 ),
@State BIT ,
@Info NVARCHAR ( 2000 )
)
AS
-- 修改部分,添加下面两句
DECLARE @IsEnableLog BIT
SET @IsEnableLog = ( SELECT [ Enable ] FROM [ dbo ] . [ sysParams ] WHERE [ ID ] = 23 AND [ ParamName ] = ' 是否启用操作日志 ' )
BEGIN TRANSACTION
IF @IsEnableLog = 1 -- 判断是否启用
INSERT INTO [ dbo ] . [ OperationLog ] (UsersId, [ OperationTime ] , [ Site ] , [ Type ] , [ TransactionContent ] , [ State ] , [ Info ] ) VALUES ( @UsersId , GETDATE (), @Site , @Type , @TransactionContent , @State , @Info )
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
END
COMMIT TRANSACTION