【问题标题】:Inserting EventData to SQL table using where使用 where 将 EventData 插入 SQL 表
【发布时间】:2018-08-23 12:04:43
【问题描述】:

我有一个简单的日志记录脚本,它从触发器填充更改日志表,我试图通过排除特定模式 (chi) 的插入来限制插入的行

触发器:

 DECLARE @data XML
 SET @data = EVENTDATA()

 INSERT INTO [dbo].[Object_ChangeLog](databasename, eventtype, objectname, objecttype, sqlcommand, loginname)
 VALUES (@data.value('(/EVENT_INSTANCE/DatabaseName)[1]', 'varchar(256)'),
         @data.value('(/EVENT_INSTANCE/EventType)[1]', 'varchar(50)'), 
         @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(256)'), 
         @data.value('(/EVENT_INSTANCE/ObjectType)[1]', 'varchar(25)'), 
         @data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'varchar(max)'), 
         @data.value('(/EVENT_INSTANCE/LoginName)[1]', 'varchar(256)'))

而且我需要使用 where 子句来过滤模式名称 (chi) 下的对象更改 - 到目前为止我已经尝试过:

WHERE 
    @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(256)') NOT LIKE 'chi%'

不幸的是,这会产生语法错误,有两个问题,首先我需要从事件数据中引入一个单独的列来识别架构吗?其次,我如何利用 where 子句从触发器中的插入中删除这些。

【问题讨论】:

    标签: sql sql-server tsql sql-server-2008


    【解决方案1】:

    由于这似乎是程序代码,您可以简单地使用IF。

    ...
    IF @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(256)') NOT LIKE 'chi%'
    BEGIN
      INSERT INTO [dbo].[Object_ChangeLog](databasename, eventtype, 
      objectname, objecttype, sqlcommand, loginname)
      VALUES(
      @data.value('(/EVENT_INSTANCE/DatabaseName)[1]', 'varchar(256)'),
      @data.value('(/EVENT_INSTANCE/EventType)[1]', 'varchar(50)'), 
      @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(256)'), 
      @data.value('(/EVENT_INSTANCE/ObjectType)[1]', 'varchar(25)'), 
      @data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'varchar(max)'), 
      @data.value('(/EVENT_INSTANCE/LoginName)[1]', 'varchar(256)')
      );
    END;
    ...
    

    【讨论】:

    • 非常感谢 - 我可以通过事件数据来识别架构的另一列吗?
    • @jimmy8ball:如果SchemaName 可用于您的活动,您可以试试。
    猜你喜欢
    • 2022-01-04
    • 2020-03-23
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多