为数据库生成表的改动日志
来源:互联网 发布:凯立德优化内存 编辑:程序博客网 时间:2024/06/04 23:08
IF OBJECT_ID('dbo.AuditDDLEvents') IS NOT NULL
DROP TABLE dbo.AuditDDLEvents;
GO
CREATE TABLE dbo.AuditDDLEvents
(
lsn INT NOT NULL IDENTITY,
posttime DATETIME NOT NULL,
eventtype sysname NOT NULL,
loginname sysname NOT NULL,
schemaname sysname NOT NULL,
objectname sysname NOT NULL,
targetobjectname sysname NULL,
eventdata XML NOT NULL,
CONSTRAINT PK_AuditDDLEvents PRIMARY KEY(lsn)
);
GO
CREATE TRIGGER trg_audit_ddl_events ON DATABASE FOR DDL_DATABASE_LEVEL_EVENTS
AS
DECLARE @eventdata AS XML;
SET @eventdata = eventdata();
INSERT INTO dbo.AuditDDLEvents(
posttime, eventtype, loginname, schemaname,
objectname, targetobjectname, eventdata)
VALUES(
@eventdata.value('(/EVENT_INSTANCE/PostTime)[1]', 'VARCHAR(23)'),
@eventdata.value('(/EVENT_INSTANCE/EventType)[1]', 'sysname'),
@eventdata.value('(/EVENT_INSTANCE/LoginName)[1]', 'sysname'),
@eventdata.value('(/EVENT_INSTANCE/SchemaName)[1]', 'sysname'),
@eventdata.value('(/EVENT_INSTANCE/ObjectName)[1]', 'sysname'),
@eventdata.value('(/EVENT_INSTANCE/TargetObjectName)[1]', 'sysname'),
@eventdata);
GO
-- Test trigger trg_audit_ddl_events
CREATE TABLE dbo.T1(col1 INT NOT NULL PRIMARY KEY);
ALTER TABLE dbo.T1 ADD col2 INT NULL;
ALTER TABLE dbo.T1 ALTER COLUMN col2 INT NOT NULL;
CREATE NONCLUSTERED INDEX idx1 ON dbo.T1(col2);
GO
SELECT * FROM dbo.AuditDDLEvents;
GO
DROP TABLE dbo.AuditDDLEvents;
GO
CREATE TABLE dbo.AuditDDLEvents
(
lsn INT NOT NULL IDENTITY,
posttime DATETIME NOT NULL,
eventtype sysname NOT NULL,
loginname sysname NOT NULL,
schemaname sysname NOT NULL,
objectname sysname NOT NULL,
targetobjectname sysname NULL,
eventdata XML NOT NULL,
CONSTRAINT PK_AuditDDLEvents PRIMARY KEY(lsn)
);
GO
CREATE TRIGGER trg_audit_ddl_events ON DATABASE FOR DDL_DATABASE_LEVEL_EVENTS
AS
DECLARE @eventdata AS XML;
SET @eventdata = eventdata();
INSERT INTO dbo.AuditDDLEvents(
posttime, eventtype, loginname, schemaname,
objectname, targetobjectname, eventdata)
VALUES(
@eventdata.value('(/EVENT_INSTANCE/PostTime)[1]', 'VARCHAR(23)'),
@eventdata.value('(/EVENT_INSTANCE/EventType)[1]', 'sysname'),
@eventdata.value('(/EVENT_INSTANCE/LoginName)[1]', 'sysname'),
@eventdata.value('(/EVENT_INSTANCE/SchemaName)[1]', 'sysname'),
@eventdata.value('(/EVENT_INSTANCE/ObjectName)[1]', 'sysname'),
@eventdata.value('(/EVENT_INSTANCE/TargetObjectName)[1]', 'sysname'),
@eventdata);
GO
-- Test trigger trg_audit_ddl_events
CREATE TABLE dbo.T1(col1 INT NOT NULL PRIMARY KEY);
ALTER TABLE dbo.T1 ADD col2 INT NULL;
ALTER TABLE dbo.T1 ALTER COLUMN col2 INT NOT NULL;
CREATE NONCLUSTERED INDEX idx1 ON dbo.T1(col2);
GO
SELECT * FROM dbo.AuditDDLEvents;
GO
0 0
- 为数据库生成表的改动日志
- 用触发器生成数据库表的数据操作日志
- Log4j 为单独的类生成单独的日志文件
- 为数据库的表自动生成行号----为分页打好基础(仿Oracle的ROWNUM)
- 一次Sqlalchemy从model类定义到数据库表的SQL脚本自动生成日志
- logback系列之五:输出日志到数据库-DBAppender生成的表
- 如果需要改动源代码生成器中的代码,如何做到,下次重新生成的代码也具有额为添加的特殊函数
- 如何为你的数据库事务日志减肥?
- 自定义未捕获异常时输出的日志为空或日志文件没有生成
- 如何跟踪检查数据库中对象的改动
- 数据库表字段变动时pb 需做的改动
- 扩展log4j系列[一]DailyRollingFileAppender的按分钟生成日志修改为按n分钟生成日志
- 日志的生成
- 为数据库中所有表生成创建存储数据的存储过程代码
- 将数据库的表生成为实体类.cs文件(笔记)
- 对于事务,无法在数据库 '' (数据库 ID 为 )的页 重做日志记录页: LSN =类型 = 2日志:
- 为sql server 数据库表数据生成insert 脚本
- 为sql server 数据库表数据生成insert 脚本
- NsArray数组NsDictionary集合小结
- nvarchar转number
- N-gram语言模型文本分类器
- 浅析Spring框架下PropertyPlaceholderConfigurer类
- JAVA 基本数据类型长度
- 为数据库生成表的改动日志
- spring mvc使用ehcache
- 小波变换和motion信号处理(一)
- (hdu step 2.3.7)下沙的沙子有几粒?(简单DP:求有m个H,n和D,且任意索引上H的个数都要比D的个数多的方案数)
- [C++]LeetCode: 131 Trapping Rain Water (双边扫描)
- aeroo报表使用指南
- 设置状态栏
- 语音分享应用源码项目
- Android Handler机制