zoukankan      html  css  js  c++  java
  • SQL2005 库级触发器的运用

    /*---------------------------------

    版本号: 2009-5-20
    作 者 : 叮叮猫
    起作用 只针对对数据的内表的增加 删除修改
    但是当你对数据库内数据的操作 是不能进行捕获的
    ----------------------------*/
    USE testDB
    GO
    USE [testDB]
    GO
    create table [DatabaseLog] --创建一张表进行查询
    (
     [PostTime] datetime,
      [DatabaseUser] xml,
         [Event] xml,
         [Schema] xml,
         [Object] xml,
         [TSQL] xml,
         [XmlEvent] xml
    )
    go


    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    go
    CREATE TRIGGER [ddlDatabaseTriggerLog]
    ON DATABASE
    FOR DDL_DATABASE_LEVEL_EVENTS    --数据库级的触发器
    AS
    BEGIN
        SET NOCOUNT ON;
       
        DECLARE @data XML;
        DECLARE @schema sysname;
        DECLARE @object sysname;
        DECLARE @eventType sysname;

        SET @data = EVENTDATA();
        SET @eventType = @data.value('(/EVENT_INSTANCE/EventType)[1]', 'sysname');
        SET @schema = @data.value('(/EVENT_INSTANCE/SchemaName)[1]', 'sysname');
        SET @object = @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'sysname')

        IF @object IS NOT NULL
            PRINT '  ' + @eventType + ' - ' + @schema + '.' + @object;
        ELSE
            PRINT '  ' + @eventType + ' - ' + @schema;

        IF @eventType IS NULL
            PRINT CONVERT(nvarchar(max), @data);

        INSERT [dbo].[DatabaseLog]
            (
            [PostTime],
            [DatabaseUser],
            [Event],
            [Schema],
            [Object],
            [TSQL],
            [XmlEvent]
            )
        VALUES
            (
            GETDATE(),
            CONVERT(sysname, CURRENT_USER),
            CONVERT(sysname,@eventType),
            CONVERT(sysname, @schema),
            CONVERT(sysname, @object),
            @data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(max)'),
            @data
            );
    END;

    GO
    SET ANSI_NULLS OFF
    GO
    SET QUOTED_IDENTIFIER OFF
    GO

    ------------------------测试-------------------------------
    create table testtabel
    (
     id int
    )
    insert into testtabel values(111)
    update testtabel set id=333
    drop table testtabel
    select * from [DatabaseLog]

  • 相关阅读:
    存储过程调用API
    Visual Studio 2019 添加不了区域 解决办法
    .NET Core 3.1 IIS其它网站出现HTTP503无法访问解决方法
    串口数据处理分包处理
    树莓派实践总和
    mysql定期任务
    Newtonsoft.Json.Linq 序列化 反序列化等知识
    使用IDbCommandInterceptor解决EF-CORE-3.x-使用MYSQL时,未正常的生成LIKE查询语句
    .Net Core自定义读取配置文件信息appsettings.Json
    .Net Core Cors跨域
  • 原文地址:https://www.cnblogs.com/dingdingmao/p/3146560.html
Copyright © 2011-2022 走看看