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

相关文章

  • SQL SERVER 与ACCESS、EXCEL的数据转换

    SQL SERVER 与ACCESS、EXCEL的数据转换

    SQL SERVER 与ACCESS、EXCEL的数据转换...
    2007-02-02
  • JMeter对数据库的查询操作步骤详解

    JMeter对数据库的查询操作步骤详解

    这篇文章主要详细说明,使用JDBC Request组件,如何对数据库进行查询的各种操作,重点是JMeter中查询语句的操作步骤,通过实例代码讲解,需要的朋友可以参考下
    2021-06-06
  • ms SQL server数据库备份、压缩与SQL数据库数据处理的方法

    ms SQL server数据库备份、压缩与SQL数据库数据处理的方法

    ms SQL server数据库备份、压缩与SQL数据库数据处理的方法...
    2007-07-07
  • Dbeaver基本使用图文详解

    Dbeaver基本使用图文详解

    dbeaver是一款很强大的数据库连接工具,本人之前使用的是navicat,挺好用的,只不过每次激活都要整半天,然后看到了dbeaver这款工具,本着尝试的心态,体验了下,真香
    2021-11-11
  • DM达梦数据日期时间函数、系统函数用法整理大全

    DM达梦数据日期时间函数、系统函数用法整理大全

    DM(达梦数据库管理系统)是一款国产的高性能数据库管理系统,广泛应用于政府、金融、电信等多个行业,下面这篇文章主要介绍了DM达梦数据日期时间函数、系统函数用法整理的相关资料,需要的朋友可以参考下
    2025-04-04
  • navicat15 恢复试用方法图解

    navicat15 恢复试用方法图解

    因为公司项目需要用到Mysql数据库,为了方便管理,使用navicat for mysql 15来进行可视化操作数据库,结果项目还没做完,试用就过期了,下面通过本文给大家分享navicat15 恢复试用方法,感兴趣的朋友一起看看吧
    2023-10-10
  • 数据库sql查询性能优化详解

    数据库sql查询性能优化详解

    这篇文章主要介绍了数据库sql查询性能优化详解,查询优化的本质是让数据库优化器为SQL语句选择最佳的执行计划,对于大型的应用系统,大量的数据当然需要效率最快的执行语句,需要的朋友可以参考下
    2023-07-07
  • SQL中Having与Where的区别及注意

    SQL中Having与Where的区别及注意

    这篇文章给大家详细的介绍了SQL中Having与Where的区别,以及这两者的注意事项,文中还分享了Having与Where的示例代码,相信对大家的理解和学习很有帮助,感兴趣的朋友们可以参考借鉴,有需要的朋友们可以一起学习学习。
    2016-11-11
  • Mybatis分页插件的实例详解

    Mybatis分页插件的实例详解

    这篇文章主要介绍了Mybatis分页插件的实例详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • MySQL mysqldump命令使用详解

    MySQL mysqldump命令使用详解

    MySQL有很多可以导入数据的方法,然而这些只是数据传输中的一半,另外的一般是从MySQL数据库中导出数据。有许多的原因我们需要导出数据。一个重要的原因是用于备份数据库。数据的造价常常是昂贵的,需要谨慎处理它们。
    2006-12-12

最新评论