那就是说Auto奥迪(Audi)t那么些本子能做这么些跟踪审计方面包车型大巴行事吗,审计、跟踪记录全体的DDL脚本

 

 

AutoAudit介绍

AutoAudit介绍

 

 

Auto奥迪t这几个是PaulNielsen写的五个开源的审计跟踪的台本项目,项目坐落https://autoaudit.codeplex.com/上,Paul
Nielsen的一篇博客CodeGen to Create Fixed Audit Trail
Triggers上也介绍了他成立那一个类别的前因后果。如今风靡的版本为3.30a,官方文书档案写着扶助SQL Server 二零零六, 二零零六,
二〇一三。依据小编的测试,SQL Server
2016也是帮忙的。看了那个类型最后三遍创新时间为2011年,也正是说那么些时候SQL Server 201四 、SQL Server 201⑥ 、SQL Server
2017都还平素不公布。能够那样说,Audo奥迪(Audi)t那个类型自二〇一二年后,已经终止更新了。

Auto奥迪t那些是PaulNielsen写的一个开源的审计跟踪的脚本项目,项目位于https://autoaudit.codeplex.com/上,Paul
Nielsen的一篇博客CodeGen to Create Fixed 奥迪(Audi)t Trail
Triggers上也介绍了他创制这几个项指标来踪去迹。近期风行的版本为3.30a,官方文书档案写着扶助SQL Server 二〇〇七, 二零一零,
二零一二。依据小编的测试,SQL Server
贰零壹伍也是永葆的。看了这几个系列最终1回革新时间为二〇一二年,也正是说这个时候SQL Server 201四 、SQL Server 201六 、SQL Server
2017都还从未揭露。能够如此说,Audo奥迪(Audi)t那一个体系自二零一二年后,已经甘休更新了。

 

 

 

 

这正是说Auto奥迪t这一个本子能做那个跟踪审计方面包车型地铁工作吧?下边笼统的下结论了一下Auto奥迪t的功效:

那么Auto奥迪t这一个剧本能做那个跟踪审计方面包车型地铁干活啊?上边笼统的总计了一下Auto奥迪t的遵从:

 

 

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

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

 

 

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

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

 

 

2:
审计DML(INSE昂科雷T、UPDATE、DELETE)的脚本以及数据变动。

2:
审计DML(INSEMuranoT、UPDATE、DELETE)的脚本以及数额变化。

 

 

   能够灵活布署、动态监督有些表、或一批表、恐怕全部表的DML操作,例如INSELX570T、UPDATE、DELTE操作,能够只捕获SQL语句,也能够捕获相关值的扭转(记录修改前的值与修改后的值)。能够安装参数、在被监督的表上动态的变型触发器等。

   可以灵活配置、动态监察和控制有些表、或一批表、或许全体表的DML操作,例如INSE福特ExplorerT、UPDATE、DELTE操作,能够只捕获SQL语句,也足以捕获相关值的变更(记录修改前的值与修改后的值)。能够设置参数、在被监控的表上动态的扭转触发器等。

 

 

 

 

AutoAudit部署

AutoAudit部署

 

 

Auto奥迪t的配置是格外不难的事务,你从官方下载三个Auto奥迪t的SQL脚本,例如当前版本为Auto奥迪(Audi)t
3.30a.sql,你能够修改部分变量或不做修改,在你须要做审计跟踪的数据库执行脚本就自在陈设了。当然,倘诺你要搞懂、弄透的话,还得开支一番武功商量一下本子。Auto奥迪t
3.30a.sql的脚本大约5000多行,里面有恢宏的笺注,代码非凡优雅、简洁。个人拜读起来,感觉就是一件精雕细琢的艺术品,爽心悦目。下边来回顾介绍一下那一个开源项目吧,揣测认真看代码的远非多少人。

Auto奥迪t的安排是相当简单的业务,你从官方下载3个Auto奥迪t的SQL脚本,例如当前版本为Auto奥迪(Audi)t
3.30a.sql,你能够修改部分变量或不做修改,在您必要做审计跟踪的数据库执行脚本就轻松布署了。当然,假设您要搞懂、弄透的话,还得开支一番武功切磋一下剧本。AutoAudit
3.30a.sql的脚本大概四千多行,里面有恢宏的笺注,代码相当优雅、简洁。个人拜读起来,感觉正是一件精雕细琢的艺术品,爽心悦目。下边来回顾介绍一下那个开源项目吧,推断认真看代码的远非多少人。

 

 

皇冠现金app 1

皇冠现金app 2

 

 

 

 

要是您从未改动任何参数,执行完这些剧本后,就会在当前数据库上创造上边一些目标:

借使你未曾改动任何参数,执行完这些本子后,就会在现阶段数据库上成立上面一些对象:

 

 

1:数据库DDL触发器SchemaAuditDDLTrigger

1:数据库DDL触发器SchemaAuditDDLTrigger

 

 

2:创设一些数据库对象,假设没有改动参数@奥迪(Audi)tSchema,默许创制在奥迪t那么些Schema上面。

2:创建一些数据库对象,假若没有改动参数@奥迪(Audi)tSchema,暗中认可创造在奥迪(Audi)t这些Schema下边。

 

 

Table(8个)

Table(8个)

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

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

[Audit].[AuditBaseTables]       
记录审计、跟踪表的有关参数,它会取那里的相关值动态变化相关触发器。暗许为空

[Audit].[AuditBaseTables]       
记录审计、跟踪表的有关参数,它会取那里的相关值动态变化相关触发器。暗许为空

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

[Audit].[AuditDetail]           
记录表数据INSEOdysseyT、UPDATE、DELETE变化前后的值(能够记下整个字段或局地字段)

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

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

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

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

[Audit].[AuditHeaderArchive]    
[Audit].[AuditDetail]表的数据归档表

[Audit].[AuditHeaderArchive]    
[Audit].[AuditDetail]表的数量归档表

[Audit].[AuditSettings]         
Auto奥迪t的有关参数

[Audit].[AuditSettings]         
Auto奥迪(Audi)t的连锁参数

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

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

 

 

 

 

View(5个)

View(5个)

 

 

[Audit].[vAudit]

[Audit].[vAudit]

[Audit].[vAuditAll]

[Audit].[vAuditAll]

[Audit].[vAuditArchive]

[Audit].[vAuditArchive]

[Audit].[vAuditDetailAll]

[Audit].[vAuditDetailAll]

[Audit].[vAuditHeaderAll]

[Audit].[vAuditHeaderAll]

 

 

 

 

Procedure(16个)

Procedure(16个)

 

 

[Audit].[pAutoAuditArchive]

[Audit].[pAutoAuditArchive]

[Audit].[pAutoAudit]

[Audit].[pAutoAudit]

[Audit].[pAutoAuditRebuild]

[Audit].[pAutoAuditRebuild]

[Audit].[pAutoAuditRebuildAll]

[Audit].[pAutoAuditRebuildAll]

[Audit].[pAutoAuditDrop]

[Audit].[pAutoAuditDrop]

[Audit].[pAutoAuditAll]

[Audit].[pAutoAuditAll]

[Audit].[pAutoAuditSetTriggerState]

[Audit].[pAutoAuditSetTriggerState]

[Audit].[pAutoAuditSetTriggerStateAll]

[Audit].[pAutoAuditSetTriggerStateAll]

[Audit].[pAutoAuditDropAll]

[Audit].[pAutoAuditDropAll]

[Audit].[GenerateIt]

[Audit].[GenerateIt]

[Audit].[SuspendIt]

[Audit].[SuspendIt]

[Audit].[ReactivateIt]

[Audit].[ReactivateIt]

[Audit].[RemoveIt]

[Audit].[RemoveIt]

[Audit].[ProcessExpiredDataAudits]

[Audit].[ProcessExpiredDataAudits]

[Audit].[ProcessDataAuditsCleanup]

[Audit].[ProcessDataAuditsCleanup]

[Audit].[ProcessDataAuditsCleanupForAllDb]

[Audit].[ProcessDataAuditsCleanupForAllDb]

 

 

 

 


[Audit].[AuditSettings]是计划消息表,关于Audo奥迪(Audi)t的配备音讯都位居该表。假如要掌握、学习Audo奥迪t这么些项目,那么必须询问那一个参数。参数具体效果能够插手脚本注释音信.


[Audit].[AuditSettings]是布局信息表,关于Audo奥迪t的布署音信都坐落该表。假诺要打听、学习Audo奥迪(Audi)t这一个连串,那么必须精晓那个参数。参数具体效果能够参与脚本注释音讯.

 

 

 

 

SELECT
* FROM [Audit].[AuditSettings]

SELECT
* FROM [Audit].[AuditSettings]

 

 

 

 

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

此时,你查询[Audit].[SchemaAudit],发现数据库DDL触发器已经抓获了您创立视图、存款和储蓄进度等等的DDL脚本

 

 

皇冠现金app 3

皇冠现金app 4

 

 

 

 

上面大家来测试一下Auto奥迪t的功用吗,
如下所示,大家清空[Audit].[SchemaAudit]下多少,然后创造、修改TEST表,具体育项目测验试脚本如下,数据库的DDL触发器会捕获相关DDL SQL,当然DML操作是不会被捕获的。

上边大家来测试一下Auto奥迪(Audi)t的机能吗,
如下所示,大家清空[Audit].[SchemaAudit]下数据,然后创建、修改TEST表,具体育项目测验试脚本如下,数据库的DDL触发器会捕获相关DDL SQL,当然DML操作是不会被擒获的。

 

 

TRUNCATE
TABLE [Audit].[SchemaAudit]

TRUNCATE
TABLE [Audit].[SchemaAudit]

 

 

GO

GO

 

 

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

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

GO

GO

ALTER
TABLE TEST ADD SEX BIT;

ALTER
TABLE TEST ADD SEX BIT;

GO

GO

ALTER
TABLE TEST DROP COLUMN SEX;

ALTER
TABLE TEST DROP COLUMN SEX;

GO

GO

 

 

 

 

皇冠现金app 5

皇冠现金app 6

 

 

 

 

 

 

 

 

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

利用账号tmp登录数据库,执行上边一批脚本

 

 

 

 

USE
YourSQLDba;

USE
YourSQLDba;

GO

GO

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

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

GO

GO

ALTER
TABLE TEST ADD SEX BIT;

ALTER
TABLE TEST ADD SEX BIT;

GO

GO

INSERT
INTO TEST

INSERT
INTO TEST

SELECT
1000, ‘KERRY’, 1 ;

SELECT
1000, ‘KERRY’, 1 ;

GO

GO

DROP
TABLE TEST;

DROP
TABLE TEST;

GO

GO

 

 

 

 

正如所示,Schema奥迪(Audi)tDDLTrigger触发器会捕获DDL相关脚本记录到表下[Audit].[SchemaAudit],XML伊芙ntData里面包蕴了现实、详细的新闻。例如脚本执行的日子、ServerName等等。

如下所示,Schema奥迪(Audi)tDDLTrigger触发器会捕获DDL相关脚本记录到表下[Audit].[SchemaAudit],XML伊芙ntData里面含有了具体、详细的新闻。例如脚本执行的小时、ServerName等等。

 

 

皇冠现金app 7

皇冠现金app 8

 

 

 

 

那么接下去,我们想审计、跟踪有个别具体表,例如,大家想审计、跟踪[Maint].[DataBaseSizeDtl_Day]表,那么能够通过存款和储蓄进程奥迪t.pAuto奥迪(Audi)t去实现

那么接下去,大家想审计、跟踪有个别具体表,例如,大家想审计、跟踪[Maint].[DataBaseSizeDtl_Day]表,那么能够透过存款和储蓄进程奥迪t.pAuto奥迪(Audi)t去完毕

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
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

) 
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

) 

皇冠现金app, 

 

 

 

注意,对应参数的不比值会潜移默化触发器以及审计内容以及数据。

留神,对应参数的两样值会影响触发器以及审计内容以及数据。

 

 

@SchemaName 审计表的Schema

@SchemaName 审计表的Schema

@TableName  审计表的表名

@TableName  审计表的表名

@ColumnNames 表的字段,假如只为<All>那么在AuditDetail记录全部字段的变化值,也得以只记录有些或某个字段的值。

@ColumnNames 表的字段,假使只为<All>那么在奥迪tDetail记录全体字段的变化值,也能够只记录某些或一些字段的值。

@StrictUserContext
暗中认可为1,假若为0,那么会在跟踪升级表上平添字段[AutoAudit_CreatedDate]、[AutoAudit_CreatedBy]等。

@StrictUserContext
暗许为1,若是为0,那么会在跟踪升级表上平添字段[AutoAudit_CreatedDate]、[AutoAudit_CreatedBy]等。

@LogSQL          
0代表不会奥迪(Audi)tHeader中记录DML操作的SQL,1意味着在奥迪tHeader中记录DML操作的SQL

@LogSQL          
0代表不会奥迪(Audi)tHeader中记录DML操作的SQL,1代表在AuditHeader中记录DML操作的SQL

@BaseTableDDL     0代表在基表不扩大审计字段,1象征在基表扩大审计字段

@BaseTableDDL     0代表在基表不扩充审计字段,1表示在基表扩张审计字段

@LogInsert  0代表不审计任何INSE卡宴T,1意味只会记录SQL等新闻到表奥迪tHeader,2表示不仅抓获SQL等音讯,还会捕获详细数据变化值到奥迪(Audi)tDetail

@LogInsert  0表示不审计任何INSELacrosseT,1表示只会记录SQL等音信到表奥迪tHeader,2象征不仅抓获SQL等消息,还会捕获详细数据变化值到奥迪tDetail

@LogUpdate  0表示不审计任何UPDATE,1代表只会记录SQL等音讯到表奥迪tHeader,2意味着不仅抓获SQL等音信,还会捕获详细数据变化值到奥迪(Audi)tDetail

@LogUpdate  0表示不审计任何UPDATE,1意味着只会记录SQL等新闻到表奥迪tHeader,2意味不仅抓获SQL等消息,还会捕获详细数据变化值到奥迪tDetail

    @LogDelete  0代表不审计任何DELETE,1意味只会记录SQL等音信到表奥迪(Audi)tHeader,2表示不仅抓获SQL等音信,还会捕获详细数据变化值到奥迪(Audi)tDetail

    @LogDelete  0代表不审计任何DELETE,1表示只会记录SQL等音讯到表奥迪(Audi)tHeader,2象征不仅抓获SQL等消息,还会捕获详细数据变化值到奥迪(Audi)tDetail

 

 

 

 

皇冠现金app 9

皇冠现金app 10

 

 

就会在’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等等具体新闻

就会在’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]

SELECT
* FROM [Audit].[AuditHeader]

 

 

 

 

皇冠现金app 11

皇冠现金app 12

 

 

 

 

SELECT
* FROM AUDIT.AuditDetail

SELECT
* FROM AUDIT.AuditDetail

 

 

 

 

皇冠现金app 13

皇冠现金app 14

 

 

 

 

 

 

Auto奥迪(Audi)t的得失

Auto奥迪t的利弊

 

 

Audto奥迪(Audi)t配置简单、灵活,能够在成功基本审核或精美审核,完全能够依照必要定制审计粒度新闻;
其它,代码中有好多地点值得大家上学、借鉴的地点。可是测试Auto奥迪t的进度中也意识了部分Bug,如今该类型终止更新,必要协调消除那一个标题,例如,当主键的字段不是率先列并且钦定具体列@ColumnNames时,那么在应用奥迪(Audi)t.pAuto奥迪t
成立连锁触发器时就会报错,如下截图所示

Audto奥迪(Audi)t配置简单、灵活,能够在成就基本审核或精美审核,完全能够依照需求定制审计粒度音信;
别的,代码中有众多地点值得我们上学、借鉴的地方。然则测试Auto奥迪(Audi)t的进程中也发觉了某些Bug,如今该项目终止更新,要求团结化解那些难点,例如,当主键的字段不是首先列并且钦命具体列@ColumnNames时,那么在应用奥迪(Audi)t.pAuto奥迪(Audi)t
成立连锁触发器时就会报错,如下截图所示

 

 

 

 

USE
YourSQLDba;

USE
YourSQLDba;

GO

GO

 

 

SELECT
* INTO db_objects FROM sys.objects;

SELECT
* INTO db_objects FROM sys.objects;

 

 

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

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

 

 

GO

GO

 

 

 

 

EXEC
Audit.pAutoAudit @SchemaName = ‘dbo’,

EXEC
Audit.pAutoAudit @SchemaName = ‘dbo’,

    @TableName
= ‘db_objects’,

    @TableName
= ‘db_objects’,

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

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

   
@StrictUserContext = 1,

   
@StrictUserContext = 1,

    @LogSQL = 1,

    @LogSQL = 1,

    @BaseTableDDL
= 0,

    @BaseTableDDL
= 0,

    @LogInsert
= 1,

    @LogInsert
= 1,

    @LogUpdate
= 1,

    @LogUpdate
= 1,

    @LogDelete
= 1

    @LogDelete
= 1

 

 

 

 

 

 

皇冠现金app 15

皇冠现金app 16

 

 

本来也还有一些别样bug,如下所:

自然也还有一部分其余bug,如下所:

 

 

EXEC
Audit.pAutoAudit @SchemaName = ‘dbo’,

EXEC
Audit.pAutoAudit @SchemaName = ‘dbo’,

    @TableName
= ‘db_objects’,

    @TableName
= ‘db_objects’,

    @ColumnNames
= ‘<all>’,

    @ColumnNames
= ‘<all>’,

   
@StrictUserContext = 1,

   
@StrictUserContext = 1,

    @LogSQL = 1,

    @LogSQL = 1,

    @BaseTableDDL
= 0,

    @BaseTableDDL
= 0,

    @LogInsert
= 1,

    @LogInsert
= 1,

    @LogUpdate
= 1,

    @LogUpdate
= 1,

    @LogDelete
= 1

    @LogDelete
= 1

 

 

皇冠现金app 17

皇冠现金app 18

 

 

 

 

其一都亟需你调节和测试代码,找出荒唐的来由,修改有关代码(首要都以动态生成SQL时,有一些SQL语法错误,例如多了2个,等等),如今。已经本人已经意识并修改了该代码多处位置的小Bug。

以此都亟待您调节和测试代码,找出荒唐的因由,修改相关代码(首要都以动态生成SQL时,有一对SQL语法错误,例如多了多个,等等),近日。已经本身一度发现并修改了该代码多处地点的小Bug。

 

 

最后跟踪审计,固然没有须要的话,最棒不要开启,除非是为寻找定位一些题材,因为毕竟那么些还是有众多附加的属性开支、损耗,越发是这种利用触发器来跟踪、审计,Auto奥迪t也分明提出这几个会潜移默化属性:“Adding
Auto奥迪(Audi)t to your tables will impact performance.”

终极跟踪审计,假设没有供给的话,最佳不要开启,除非是为寻找定位一些标题,因为毕竟这几个还是有好多附加的品质花费、损耗,尤其是那种使用触发器来跟踪、审计,Auto奥迪t也明显建议那些会潜移默化属性:“Adding
Auto奥迪(Audi)t to your tables will impact performance.”

 

 

 

 

参考资料:

参考资料:

 

 

https://autoaudit.codeplex.com/

https://autoaudit.codeplex.com/

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

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