艺术AutoAudit研究学习

 

入电影院之前,朋友提醒自己,要全好纸巾——擦眼泪用。

AutoAudit介绍

时空交错中,不同时期之几乎独小青年,书写在属于自己之无悔青春。整部电影励志,明快,温暖。女导演有意的细腻敏感,让电影处处洋溢着和。

 

当圈录像的以,我的心绪也随着剧情一波三折。有几乎单问题啊于脑际中盘旋。

AutoAudit这个是Paul
Nielsen写的一个开源的审计跟踪的台本项目,项目在https://autoaudit.codeplex.com/上,Paul
Nielsen的一律首博客CodeGen to Create Fixed Audit Trail
Triggers上吧介绍了外创建是项目的前因后果。目前流行的版为3.30a,官方文档写着支持SQL Server 2005, 2008,
2012。根据本人之测试,SQL Server
2014也是支撑的。看了这类型最终一蹩脚创新时间吗2012年,也就是说那个时段SQL Server 2014、SQL Server 2016、SQL Server
2017且还从未发表。可以这么说,AudoAudit这个路自从2012年晚,已经停止更新了。

关于青春的激动。王敏佳与李想爬上墙头,看到了中学老师受到老婆的谩骂,甚至毒打,气愤不已。两人感念闹了写匿名信警告师母的不二法门。却绝非悟出,却激起到了师母,对教师又加深起来。

 

设若立无异圈犹如简单冲动的做法,却为王敏佳日后的活着,埋下了祸端,因为此事,惨遭折磨,险些丧命。

 

可,在全事件受到,我们也没法去埋怨任何人。老师夫妻的活,外人看来底凡表象,只道是家暴,却不知内里隐藏的苦水。

那AutoAudit这个本子能举行那些跟审计方面的办事啊?下面笼统的下结论了一下AutoAudit底机能:

为年轻,王敏佳同李想于看不惯的人及从业,凭着善良和热心,以为会轻易改变些什么,却非理解,人生就是是这样残忍,命运呢接连爱捉弄人,让人尝尝尽苦辣酸甜。

 

也许更之作业基本上矣,就会少把意气用事,少来冲动,可是,那吧即非叫青春了。

1:
审计、跟踪记录有的DDL脚本。

至于爱情的执着。王敏佳的老师许伯常以及师母李淑芬之间的情,让人口唏嘘不已。师母供老师上了了高校,许伯时提出了悔婚,李淑芬寻死觅活,二人口哪怕于一个屋檐下活,却比陌生人还淡淡。李淑芬对许伯常的爱,就以当下无异于天冷似一日的漠视中,枯萎死去。

 

李淑芬的荒唐在同顶过度执着,没有当即止损。她是老爱丈夫的,要不,为什么会供他修?为什么会招呼他的活?为什么会宁可自己饿着肚子,把饭菜留给丈夫吃?而女婿于它们底是什么?连一句贴心的话语都懒得说。

   它创建了一个数据库DDL的触发器,它会捕获DDL相关脚本。例如,创建、修改、删除数据库对象等。

纵然当针对婚姻之绝望中,李淑芬找有了写匿名信的人头,她长期压抑的痛,终于产生矣发的靶子,她拿对男人的怨恨,全部算是在了王敏佳的身上。

 

或者,她开始只是怀念发,可事情的迈入过了拥有人的预料。不明真相的吃瓜群众一拥而上,就在纷纷扬扬中,砸晕了王敏佳。慌乱中,李淑芬回到家,丈夫还是淡淡之,她最后回忆了他们之间就有的甜蜜,决绝之跳入水井自杀。

2:
审计DML(INSERT、UPDATE、DELETE)的台本以及数据变化。

自我无能为力忘记许伯时那苍凉的哭喊声。人耶,为什么有时,从来不会好珍惜,哪怕善待一下认可啊,可反复还是只有及去才追悔莫及。

 

关于美之坚持不懈。富家公子沈光耀,本可以在高校之象牙塔中快乐地在。但他以中华民族危亡之际,依然选择当一叫空军老将,报效祖国。身也家独子,当他坚称自己之大好时,便决定了忠孝不可少清一色。

   可以活安排、动态监督有表、或平等批表、或者所有表的DML操作,例如INSERT、UPDATE、DELTE操作,可以就捕获SQL语句,也得捕获相关值的更动(记录修改前之值与改后的价值)。可以设置参数、在为监督的表上动态的扭转触发器等。

沈光耀选择了呢优质献身,为信教使生。他平生还懂得认识及,自己得什么,自己如果去做呀,他爱的人口,爱他的人,终会理解他的选取。

 

当沈光耀战友为家属带来去他牺牲的消息时,光耀妈妈的悲愤难以抑制,但他让点儿称老将端上了,她曾吃光耀熬制冰糖莲子汤。她是将男的战友为正是了温馨之男女。年轻的士兵被光耀妈妈跪下了,他们是当为光耀下下跪。脸颊痒痒的,眼角不明白何时起的眼泪流了下去。

 

归根结底认为感情需要发挥,其实深的爱往往无言,却仅上内心无比柔韧处。

AutoAudit部署

每当校园里,孤儿陈鹏是挺爱在王敏佳的,可是年轻时之爱恋,总是一样颗耀眼易碎的水晶,经不起误会。可当真的感情并无是只有所有,虽无克以合,却也只想竭力保障她平平安安。

 

影片安排了心灵感应。王敏佳痛时,陈鹏为会见感到心痛,王敏佳遭难时,陈鹏以总里以外,也能发心中不宁。两个苦命的总人口终于抱在联合,让这段苦涩的恋情来了好几甜蜜。故事到底是故事,现实中反复是,错过一代,往往就是是一辈子,人生永无那基本上的自查自纠路,也没尽多之偶合。

AutoAudit的部署是非常简单的作业,你自官方下载一个AutoAudit的SQL脚本,例如当前本也AutoAudit
3.30a.sql,你可修改部分变量或非举行修改,在您得开审计跟踪的数据库执行脚本就轻松部署了。当然,如果您要是干明白、弄透的言辞,还得花费一番功夫研究一下剧本。AutoAudit
3.30a.sql底台本大概6000大多履,里面有恢宏之笺注,代码非常优雅、简洁。个人拜读起来,感觉就是是一样桩精雕细琢的艺术品,爽心悦目。下面来简单介绍一下这开源项目吧,估计认真看代码的无几个人口。

艺术作品,是我们以人生之正确性里,寻求的最后一丝慰藉。就设电影台词所说,无问西东,只问自由,只问盛放,只问深情,只问敢勇,无问西东。

 

愿你在让打击时,记起你的难能可贵,抵抗恶意,愿君在盲目时,坚信你的名贵。爱君所好,行而所行,听从你心,无问东西。

艺术 1

尽管像张果果,听从内心,最终摘取好和好。愿人人都生得实,平静,晚安。

 

 

一经您未曾改动外参数,执行了这本子后,就会见当时数据库及创设下面有对象:

 

1:数据库DDL触发器SchemaAuditDDLTrigger

 

2:创建有数据库对象,如果无改动参数@AuditSchema,默认创建以Audit这个Schema下面。

 

Table(8个)

[Audit].[AuditAllExclusions]     排除审计、跟踪的表

[Audit].[AuditBaseTables]       
记录审计、跟踪表的连带参数,它会沾此的相互关值动态变化相关触发器。默认为空

[Audit].[AuditDetail]           
记录表数据INSERT、UPDATE、DELETE变化前后的价值(可以记录整个字段或有字段)

[Audit].[AuditDetailArchive]    
[Audit].[AuditDetail]的存档数据。

[Audit].[AuditHeader]           
记录表DML操作的有关用户、应用程序、以及SQL语句等。

[Audit].[AuditHeaderArchive]    
[Audit].[AuditDetail]发明底数据归档表

[Audit].[AuditSettings]         
AutoAudit的相关参数

[Audit].[SchemaAudit]           
记录数据库的DDL信息,例如SQL、应用程序等等。

 

 

View(5个)

 

[Audit].[vAudit]

[Audit].[vAuditAll]

[Audit].[vAuditArchive]

[Audit].[vAuditDetailAll]

[Audit].[vAuditHeaderAll]

 

 

Procedure(16个)

 

[Audit].[pAutoAuditArchive]

[Audit].[pAutoAudit]

[Audit].[pAutoAuditRebuild]

[Audit].[pAutoAuditRebuildAll]

[Audit].[pAutoAuditDrop]

[Audit].[pAutoAuditAll]

[Audit].[pAutoAuditSetTriggerState]

[Audit].[pAutoAuditSetTriggerStateAll]

[Audit].[pAutoAuditDropAll]

[Audit].[GenerateIt]

[Audit].[SuspendIt]

[Audit].[ReactivateIt]

[Audit].[RemoveIt]

[Audit].[ProcessExpiredDataAudits]

[Audit].[ProcessDataAuditsCleanup]

[Audit].[ProcessDataAuditsCleanupForAllDb]

 

 


[Audit].[AuditSettings]是布信息表,关于AudoAudit的配置信息都置身该表。如果如打听、学习AudoAudit这个类型,那么要询问这些参数。参数具体成效可参加脚本注释信息.

 

 

SELECT
* FROM [Audit].[AuditSettings]

 

 

此时,你查询[Audit].[SchemaAudit],发现数据库DDL触发器已经捕获了若创造视图、存储过程等等的DDL脚本

 

艺术 2

 

 

脚我们来测试一下AutoAudit的效用吧,
如下所示,我们清空[Audit].[SchemaAudit]下数据,然后创建、修改TEST表,具体测试脚论如下,数据库的DDL触发器会捕获相关DDL SQL,当然DML操作是匪见面让擒获的。

 

TRUNCATE
TABLE [Audit].[SchemaAudit]

 

GO

 

CREATE
TABLE TEST(ID INT ,NAME VARCHAR(12));

GO

ALTER
TABLE TEST ADD SEX BIT;

GO

ALTER
TABLE TEST DROP COLUMN SEX;

GO

 

 

艺术 3

 

 

 

 

使账号tmp登录数据库,执行下一批脚本

 

 

USE
YourSQLDba;

GO

CREATE
TABLE TEST(ID INT, NAME VARCHAR(24));

GO

ALTER
TABLE TEST ADD SEX BIT;

GO

INSERT
INTO TEST

SELECT
1000, ‘KERRY’, 1 ;

GO

DROP
TABLE TEST;

GO

 

 

如下所示,SchemaAuditDDLTrigger触发器会捕获DDL相关脚论记录到表下[Audit].[SchemaAudit],XMLEventData里面含有了现实、详细的音。例如脚本执行的工夫、ServerName等等。

 

艺术 4

 

 

这就是说连下,我们想审计、跟踪某个具体表,例如,我们纪念审计、跟踪[Maint].[DataBaseSizeDtl_Day]表,那么好通过囤过程Audit.pAutoAudit去贯彻

EXEC Audit.pAutoAudit @SchemaName = 'Maint', -- sysname

    @TableName = 'DataBaseSizeDtl_Day', -- sysname

    @ColumnNames = '<All>', -- varchar(max)

    @StrictUserContext = 1, -- bit

    @LogSQL = 1, -- bit

    @BaseTableDDL = 0, -- bit

    @LogInsert = 2, -- tinyint

    @LogUpdate = 2, -- tinyint

    @LogDelete = 2 -- tinyint

 

 

积存过程是基于参数,动态变化于审计表的系触发器,如下所示,

 

ALTER PROC [Audit].[pAutoAudit] 

(

@SchemaName            sysname       = 'dbo',--this is the default schema name for the tables getting AutoAudit added

@TableName             sysname,              --enter the name of the table to add AutoAudit to.

@ColumnNames           varchar(max)= '<All>',--columns to include when logging details (@Log...=2). Default = '<All>'. Format: '[Col1],[Col2],...'

@StrictUserContext     bit           = 1,    -- 2.00 if 0 then permits DML setting of Created, CreatedBy, Modified, ModifiedBy

@LogSQL                bit           = 0,    -- 0 = Don't log SQL statement in AuditHeader, 1 = log the SQL statement

@BaseTableDDL          bit           = 0,    -- 0 = don't add audit columns to base table, 1 = add audit columns to base table

@LogInsert            tinyint        = 2,    -- 0 = nothing, 1 = header only, 2 = header and detail

@LogUpdate            tinyint        = 2,    -- 0 = nothing, 1 = header only, 2 = header and detail

@LogDelete            tinyint        = 2     -- 0 = nothing, 1 = header only, 2 = header and detail

) 

 

 

注意,对诺参数的异值会影响触发器以及审计内容及数额。

 

@SchemaName 审计表的Schema

@TableName  审计表的表名

@ColumnNames 表的字段,如果只有吗<All>那么在AuditDetail记录有字段的变化值,也堪仅记录有或某些字段的价值。

@StrictUserContext
默看1,如果为0,那么会以跟升级表上平添字段[AutoAudit_CreatedDate]、[AutoAudit_CreatedBy]等。

@LogSQL          
0代表不见面AuditHeader中记录DML操作的SQL,1意味着于AuditHeader中记录DML操作的SQL

@BaseTableDDL     0表示于基表不加审计字段,1代表以基表增加审计字段

@LogInsert  0表示不审计外INSERT,1象征仅见面记录SQL等消息及表AuditHeader,2意味着不仅抓获SQL等消息,还见面捕获详细数据变化值到AuditDetail

@LogUpdate  0表示不审计外UPDATE,1意味无非会记录SQL等消息到表AuditHeader,2象征不仅抓获SQL等消息,还会捕获详细数据变化值到AuditDetail

    @LogDelete  0表示不审计外DELETE,1代表只是会记录SQL等消息到表AuditHeader,2意味不仅抓获SQL等消息,还会见捕获详细数据变化值到AuditDetail

 

 

艺术 5

 

就会在’DataBaseSizeDtl_Day’下面生成三只触发器DataBaseSizeDtl_Day_Audit_Delete、DataBaseSizeDtl_Day_Audit_Insert、DataBaseSizeDtl_Day_Audit_Update,然后我们往这表插入数据(启动作业YourSQLDba_Monitor_Database_Daily_Growth)即可,那么接下去,查看[Audit].[AuditHeader]表明,就会收看什么HostName、SysUser、Application、Table、Operation、SQLStatement等等具体信息

 

 

SELECT
* FROM [Audit].[AuditHeader]

 

 

艺术 6

 

 

SELECT
* FROM AUDIT.AuditDetail

 

 

艺术 7

 

 

 

AutoAudit的利害

 

AudtoAudit配置简单、灵活,可以以就基本审核或精美审核,完全可以根据需要定制审计粒度信息;
另外,代码中出广大地方值得我们学习、借鉴之地方。但是测试AutoAudit的长河遭到为意识了部分Bug,目前欠档终止更新,需要好解决这些问题,例如,当主键的字段不是率先排又指定具体列@ColumnNames时,那么在使用Audit.pAutoAudit
创建连锁触发器时虽会报错,如下截图所示

 

 

USE
YourSQLDba;

GO

 

SELECT
* INTO db_objects FROM sys.objects;

 

ALTER
TABLE db_objects
ADD CONSTRAINT pk_db_objects
PRIMARY KEY(OBJECT_ID);

 

GO

 

 

EXEC
Audit.pAutoAudit @SchemaName = ‘dbo’,

    @TableName
= ‘db_objects’,

    @ColumnNames
= ‘[type_desc],[create_date]’,

   
@StrictUserContext = 1,

    @LogSQL = 1,

    @BaseTableDDL
= 0,

    @LogInsert
= 1,

    @LogUpdate
= 1,

    @LogDelete
= 1

 

 

 

艺术 8

 

自也还有有旁bug,如下所:

 

EXEC
Audit.pAutoAudit @SchemaName = ‘dbo’,

    @TableName
= ‘db_objects’,

    @ColumnNames
= ‘<all>’,

   
@StrictUserContext = 1,

    @LogSQL = 1,

    @BaseTableDDL
= 0,

    @LogInsert
= 1,

    @LogUpdate
= 1,

    @LogDelete
= 1

 

艺术 9

 

 

本条都亟待你调试代码,找来荒谬的来由,修改相关代码(主要都是动态生成SQL时,有一对SQL语法错误,例如多矣一个,等等),目前。已经自己就意识并修改了该代码多处在地方的小Bug。

 

说到底跟审计,如果没有必要的话,最好不用开,除非是吗寻定位一些题目,因为毕竟是还是发生成百上千附加的习性开销、损耗,尤其是这种使用触发器来跟、审计,AutoAudit也明确指出这个会影响性:“Adding
AutoAudit to your tables will impact performance.”

 

 

参考资料:

 

https://autoaudit.codeplex.com/

http://sqlblog.com/blogs/paul_nielsen/archive/2007/01/15/codegen-to-create-fixed-audit-trail-triggers.aspx

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图