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

 更新时间:2008年10月17日 14:06:11   作者:  
用于sql2005实时监测数据库版本控制SQL的触发器
复制代码 代码如下:

/******
对象: 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出来

相关文章

  • 在telnet下操作memcache详解(操作命令详解)

    在telnet下操作memcache详解(操作命令详解)

    这篇文章主要介绍了在telnet下操作memcache详解,telnet下的memcache操作命令详解,需要的朋友可以参考下
    2014-07-07
  • 50条SQL查询技巧、查询语句示例

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

    这篇文章主要介绍了50条SQL查询技巧、查询语句示例,本文以学生表、课程表、成绩表、教师表为例,讲解不同需求下的SQL语句写法,需要的朋友可以参考下
    2015-06-06
  • sql 左连接和右连接的使用技巧(left join and right join)

    sql 左连接和右连接的使用技巧(left join and right join)

    今天做项目,发现左右连接是不一样的。主要是说明了区别,是不是必须用左连接或右连接,大家可以根据需要选择。
    2010-05-05
  • navicat15 恢复试用方法图解

    navicat15 恢复试用方法图解

    因为公司项目需要用到Mysql数据库,为了方便管理,使用navicat for mysql 15来进行可视化操作数据库,结果项目还没做完,试用就过期了,下面通过本文给大家分享navicat15 恢复试用方法,感兴趣的朋友一起看看吧
    2023-10-10
  • 修改插入时间不匹配问题

    修改插入时间不匹配问题

    修改插入时间不匹配问题的解决方法。需要的朋友可以参考下。
    2009-11-11
  • sql注入报错之注入原理实例解析

    sql注入报错之注入原理实例解析

    所谓报错注入,就是通过运行SQL查询语句回显查询结果,下面这篇文章主要给大家介绍了关于sql注入报错之注入原理的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • 写出高性能SQL语句的35条方法分析

    写出高性能SQL语句的35条方法分析

    高性能的SQL语句能提高页面的执行效率,让你的服务器运行的更为流畅,所以大家在以后的使用过程中,尽量的考虑到效率。
    2009-10-10
  • 你真的知道怎么优化SQL吗

    你真的知道怎么优化SQL吗

    这篇文章主要给大家介绍了关于优化SQL的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • 详解SQL中Group By的使用教程

    详解SQL中Group By的使用教程

    这篇文章主要介绍了SQL中Group By的使用,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • SQL中过滤条件放on和where中的区别详解

    SQL中过滤条件放on和where中的区别详解

    这篇文章主要给大家介绍了关于SQL中过滤条件放on和where中的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2019-01-01

最新评论