- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章判断字段是否被更新 新旧数据写入Audit Log表中由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
Insus.NET解决这个问题,只有创建另外一个表,将存储用户决定要跟踪的表,以及这个表中需要跟踪的字段。 还要创建另外一个表[Audit],就是存储跟踪记录的表: 。
复制代码代码如下
Audit SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[Audit]( [Audit_nbr] [int] IDENTITY(1,1) NOT NULL, [AuditType] [char](1) NOT NULL, [TableName] [nvarchar](128) NOT NULL, [FieldName] [nvarchar](128) NULL, [OldValue] [nvarchar](4000) NULL, [NewValue] [nvarchar](4000) NULL, [UserName] [nvarchar](128) NULL, [CreateDate] [datetime] NOT NULL, PRIMARY KEY CLUSTERED ( [Audit_nbr] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO ALTER TABLE [dbo].[Audit] WITH CHECK ADD CHECK (([AuditType]='D' OR [AuditType]='U' OR [AuditType]='I')) GO ALTER TABLE [dbo].[Audit] ADD DEFAULT (getdate()) FOR [CreateDate] GO 。
解决是谁更新数据,是使用这个方法:在SQL触发器或存储过程中获取在程序登录的用户 接下来,为跟踪表写一个更新Trigger触发器。 在触发器中访问INSERTED或DELETED的内部临时触发表,会得一个异常invalid object name 'inserted' 或是invalid object name 'deleted' ,解决此问题,可以参考这篇: EXEC(EXECUTE)函数访问INSERTED或DELETED的内部临时触发表 下面为表更新触发器(部分),有注释: 。
复制代码代码如下
--@N和@O两个变量,一个存储更新数据值,一个为原有数据值 DECLARE @sql NVARCHAR(MAX),@N DECIMAL(18,0),@O DECIMAL(18,0) --@I变量是用户需要跟踪的字段 SET @sql = N'SELECT @N = ['+ CONVERT(NVARCHAR(MAX),@I) +'] FROM #inserted' --执行动态SQL语句。 EXECUTE sp_executesql @sql, N'@N DECIMAL(18,0) OUTPUT', @N OUTPUT; --下面SQL代码,是从deleted表中获取原来数据值。 SET @sql = N'SELECT @O = ['+ CONVERT(NVARCHAR(MAX),@I) +'] FROM #deleted' EXECUTE sp_executesql @sql, N'@O DECIMAL(18,0) OUTPUT', @O OUTPUT; --对比两个数据值,更新值与原有值,如果不一样,把数据插入Audit Log表中。 IF (ISNULL(@N,0) <> ISNULL(@O,0)) EXECUTE [dbo].[usp_Audit_Insert] 'U','<tableName>','<fieldName>',@O,@N,@UserName 。
上面代码还有一个存储过程,原因是如果多表或是一个表有更新或是删除需要把跟踪的数据插入Audit Log表中时,为了更好维护与代码冗余,因此把插入Audit Log表的过程,写成一个存储过程: 。
复制代码代码如下
usp_Audit_Insert SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[usp_Audit_Insert] ( @AuditType [char](1), @TableName [nvarchar](128), @FieldName [nvarchar](128), @OldValue [nvarchar](4000), @NewValue [nvarchar](4000), @UserName [nvarchar](128) ) AS INSERT INTO [dbo].[Audit] ([AuditType],[TableName],[FieldName],[OldValue],[NewValue],[UserName]) VALUES (@AuditType,@TableName,@FieldName,@OldValue,@NewValue,@UserName) 。
最后此篇关于判断字段是否被更新 新旧数据写入Audit Log表中的文章就讲到这里了,如果你想了解更多关于判断字段是否被更新 新旧数据写入Audit Log表中的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我想将 Audit.EntityFramework 与 EntityFramework Core 结合使用,但仅忽略某些实体的审核日志中的插入。我在 Audit.EntityFramework 的 g
我在尝试获取引用未审计实体的审计实体时遇到问题。在我们的应用程序中,某些实体是在不使用 hibernate 的情况下引导的,这些实体是我们的元模型,不需要审计。 工作示例: public class
当我通过以下方式启用创建 session 审核时: audit create session by session; 然后我查询以下内容: select * from dba_priv_audit_o
嘿,这是我第一次使用 thepirat000 Audit.MVC 包,我已经做好了基础并且工作得很好: [Audit(EventTypeName = "InsertOrderAction", Incl
我必须将审计添加到我没有编码的系统中,并且在编程时也没有考虑审计。 然后我遇到了 Audit.Net,这是一个多么棒的框架! 我也在使用 Audit.Mvc 扩展。 无论如何,我想在 HomeCont
这是我得到的错误: npm ERR! code ENOAUDIT npm ERR! audit Your configured registry (https://registry.npmjs.org
我正在试着写一个小的Hello world程序,并用战争来包装它。我正在使用maven并编写一个SpringBoot应用程序来做这件事。。以下是我的Application.Java文件。在构建它时,我
Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅关注editing this post一个问题。 4
首先,我对 Oracle 审计跟踪这件事还很陌生。因此,我必须审核特定用户的操作。 我的问题是,当我检查 dba_fga_audit_trail 时,我在 sql_text 列中看到用户运行了删除语句
我正在使用 nightmare 进行测试。运行 npm audit 后,我收到有关 lodash Prototype pollution 的警告。我尝试通过运行 npm audit fix 来修复
我们正在使用 Audit.NET我们的 Asp.Net Core 项目中的库来记录用户操作。最近我们决定使用Hashicorp Vault安全地存储和获取 secret ,包括 数据库凭据 . Vau
最近,由于授权/审计功能的一些奇怪行为,我的一个生产应用程序开始抛出异常。总而言之,我可以向 channel / key 组合授予权限并获得成功响应,但是当我之后立即审核 channel 时,它会显示
有没有人有一个关于如何将审计模型添加到现有项目的工作示例,用于 Audit.Net。 这是一个非常棒的组件,到目前为止,我和我的团队已经使用标准的 JSON 文件,但是,我们希望将当前的解决方案迁移到
在Hibernate中使用@Version和@Audited时,有人可以帮助我解决用例吗? 最佳答案 @Version用于与Hibernate一起实现Optimistic locking,这意味着没有
我正在尝试使用grails audit-logging插件。它似乎可以满足我的需求。 但是,在为自动生成id的域类引用id时遇到问题。 class Person { static auditable
我正在使用Grails 2.2.2,audit-trail插件2.0.3和spring-security-core 1.2.7.3 当我将注释放在类上并使用浏览器(通过Controller / gsp
我正在尝试在基于kubeadm的k8s上启用审核选项。 (v1.11.2) 但是在--audit-policy-file上添加/etc/kubernetes/manifests/kube-apiser
我将@Audited 注释用于我的基本模型。我将其扩展到我的所有实体。但它不起作用。有什么方法可以使用吗 这是我的基本模型 @MappedSuperclass @Getter @Setter @Aud
我正在使用 Audit.NET 和 EntityFramework 扩展,当我仅跟踪 1 个实体时,一切都运行良好。 现在我正在跟踪连接到第一个实体的另一个实体,当我尝试保存它时,审核保存函数会抛出反
当这个方法在 Controller 中执行时: [Route("deleteIncCloseOut")] [HttpDelete] [AuditApi] public bool deleteIncid
我是一名优秀的程序员,十分优秀!