sql2005可实时监测数据库版本控制SQL的触发器

所属分类: 数据库 / 数据库其它 阅读数: 209
收藏 0 赞 0 分享
复制代码 代码如下:

/******
对象: DdlTrigger [Trig_DBVersionController]
脚本日期: 09/05/2008 15:50:16
作用: 数据库版本控制
******/
IF EXISTS (SELECT * FROM sys.triggers WHERE name = N'Trig_DBVersionController' AND parent_class=0)
DROP TRIGGER [Trig_DBVersionController] ON DATABASE
GO

CREATE TRIGGER [Trig_DBVersionController]
ON DATABASE
FOR CREATE_TABLE, ALTER_TABLE, DROP_TABLE,
CREATE_FUNCTION, ALTER_FUNCTION, DROP_FUNCTION,
CREATE_INDEX, ALTER_INDEX, DROP_INDEX,
CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE,
CREATE_TRIGGER, ALTER_TRIGGER, DROP_TRIGGER,
CREATE_VIEW, ALTER_VIEW, DROP_VIEW
AS
SET NOCOUNT ON
DECLARE @data AS xml
DECLARE @clientUser AS nvarchar(128)
DECLARE @spid AS nvarchar(128)
DECLARE @serverName AS nvarchar(128)
DECLARE @dbName AS nvarchar(128)
DECLARE @dbid AS int
DECLARE @objName AS nvarchar(512)

SELECT @data =EVENTDATA()
SELECT @spid = @data.value('(/EVENT_INSTANCE/SPID)[1]','nvarchar(128)')
SELECT @serverName = @data.value('(/EVENT_INSTANCE/ServerName)[1]','nvarchar(256)')
SELECT @dbName = @data.value('(/EVENT_INSTANCE/DatabaseName)[1]','nvarchar(128)')
SELECT @objName = @data.value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(128)')

SELECT @dbid = dbid FROM sys.sysdatabases
WHERE name = @dbName

--获取客户机的机器名

SELECT @clientUser=hostname FROM master..sysprocesses WHERE spid=@spid
-- add version record
INSERT INTO DBController.dbo.tbl_version_details
(post_computer_name, sys_dbid, uid, [schema],
PostTime, EventType, ObjectType, ObjectName, CommandText, Remark)
VALUES
(@clientUser, @dbid,
@data.value('(/EVENT_INSTANCE/LoginName)[1]','nvarchar(256)'),
@data.value('(/EVENT_INSTANCE/UserName)[1]','nvarchar(256)'),
@data.value('(/EVENT_INSTANCE/PostTime)[1]','datetime'),
@data.value('(/EVENT_INSTANCE/EventType)[1]','nvarchar(128)'),
@data.value('(/EVENT_INSTANCE/ObjectType)[1]','nvarchar(128)'),
@objName,
@data.value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)'),
''
)

GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ENABLE TRIGGER [Trig_DBVersionController] ON DATABASE
GO

上面是trigger

下面是存储的库和表结构
提供图片

上面图片可以清淅看到表结构
大家写出表的SQL出来
更多精彩内容其他人还在看

在PostgreSQL的基础上创建一个MongoDB的副本的教程

这篇文章主要介绍了在PostgreSQL的基础上创建一个MongoDB的副本的教程,使在使用NoSQL的同时又能用到PostgreSQL中的东西,需要的朋友可以参考下
收藏 0 赞 0 分享

使用Bucardo5实现PostgreSQL的主数据库复制

这篇文章主要介绍了使用Bucardo5实现PostgreSQL的主数据库复制,作者基于AWS给出演示,需要的朋友可以参考下
收藏 0 赞 0 分享

详细讲解PostgreSQL中的全文搜索的用法

这篇文章详细介绍了的PostgreSQL中的全文搜索的用法,包括对全文搜索的一些优化的实现,需要的朋友可以参考下
收藏 0 赞 0 分享

介绍PostgreSQL中的jsonb数据类型

这篇文章主要介绍了介绍PostgreSQL中的jsonb数据类型,jsonb是PostgreSQL9.4中开始内置的类型,能够支持GIN索引,需要的朋友可以参考下
收藏 0 赞 0 分享

介绍PostgreSQL中的Lateral类型

这篇文章主要介绍了介绍PostgreSQL中的Lateral类型,Lateral是PostgreSQL9.3版本以来加入的内置类型,需要的朋友可以参考下
收藏 0 赞 0 分享

mysql、mssql及oracle分页查询方法详解

这篇文章主要介绍了mysql、mssql及oracle分页查询方法,实例分析了数据库分页的实现技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

telnet连接操作memcache服务器详解

这篇文章主要介绍了telnet连接操作memcache服务器详解,本文讲解了连接、添加修改、读取、删除、清空所有缓存等操作命令,需要的朋友可以参考下
收藏 0 赞 0 分享

SQL语句实现删除重复记录并只保留一条

这篇文章主要介绍了SQL语句实现删除重复记录并只保留一条,本文直接给出实现代码,并给出多种查询重复记录的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

50条SQL查询技巧、查询语句示例

这篇文章主要介绍了50条SQL查询技巧、查询语句示例,本文以学生表、课程表、成绩表、教师表为例,讲解不同需求下的SQL语句写法,需要的朋友可以参考下
收藏 0 赞 0 分享

SQL查询出表、存储过程、触发器的创建时间和最后修改时间示例

这篇文章主要介绍了SQL查询出表、存储过程、触发器的创建时间和最后修改时间示例,本文直接给出代码实例,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多