ddl触发器是否有一种事件类型可以跟踪数据库(t-sql)中的所有删除事件?

道伊

我希望触发器记录数据库中发生的所有删除事件。

CREATE TRIGGER [log]
ON DATABASE
FOR DROP_TABLE, DROP_FUNCTION, DROP_TRIGGER, ...
AS ...

我可以只用一个通用的drop替换所有drop事件吗?

CREATE TRIGGER [log]
ON DATABASE
FOR DROP_FOR_ALL_DATABASE_OBJECTS
AS ...
莫哈巴蒂

您需要使用DDL_DATABASE_LEVEL_EVENTS这样,event您可以记录每个事件。

evendata()功能包括您需要记录的所有信息。例如事件类型,对象名称等。注意eventdata()返回XML

create trigger [log]
on database
for DDL_DATABASE_LEVEL_EVENTS
as
begin

    declare
        @eventType  as sysname;

    select
        @eventType  = eventdata().value('(/EVENT_INSTANCE/EventType)[1]', 'SYSNAME');

    if @eventType like '%drop%'
        ...

end;

更新:

eventdate() XML示例结果:

<EVENT_INSTANCE>
  <EventType>**</EventType>
  <PostTime>**</PostTime>
  <SPID>**</SPID>
  <ServerName>**</ServerName>
  <LoginName>**</LoginName>
  <UserName>**</UserName>
  <DatabaseName>**</DatabaseName>
  <SchemaName />
  <ObjectName>**</ObjectName>
  <ObjectType>**</ObjectType>
  <TargetObjectName />
  <TargetObjectType>**</TargetObjectType>
  <TSQLCommand>
    <SetOptions ANSI_NULLS="ON" ANSI_NULL_DEFAULT="ON" ANSI_PADDING="ON" QUOTED_IDENTIFIER="ON" ENCRYPTED="FALSE" />
    <CommandText>
        ...
    </CommandText>
  </TSQLCommand>
</EVENT_INSTANCE>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

一个sql触发器,对数据库中的所有表进行插入,更新,删除

从所有元素中删除点击事件

从日历中删除所有事件

在 aframe 中的事件期间禁用所有触发器

有没有一种方法可以将URL作为触发器批量上传到Google跟踪代码管理器?

有没有一种方法可以刷新集群上的所有文件,以便从数据库中删除主服务器和从服务器上的所有密钥

是否可以使用PostgreSQL的事件触发器针对一组特定的表捕获DDL事件?

如何从数组中删除所有出现的事件

从 gnome-calendar 中删除所有事件

从JSON数组中删除所有出现的事件

删除页面 onUnload 事件中的所有 cookie

如何从默认日历中删除所有事件

有没有一种方法可以禁用更新/删除,但仍允许触发器执行更新/删除?

在PHP的何处放置数据库事件触发器?

SQL Server 跟踪未捕获所有审核添加数据库用户事件

WPF-有没有一种方法可以在ControlTemplate的触发器中定位元素类型?

如何在Azure SQL数据库中记录所有查询事件

需要列出SQL Server数据库中具有表名和表架构的所有触发器

在laravel的数据库查询构建器中,有没有一种方法可以检索数据库表中的单行列

是否有一种简单的方法可以删除角色中的所有成员

是否可以从其他数据库表中的触发器调用 UDF?

现有的数据库触发器:由于另一个触发器而导致存储文档时,after-create-document事件不会触发

有没有一种方法可以识别SQL Server数据库中是否未使用列?

删除所有特定类型的事件侦听器

有没有一种方法可以通过Google数据存储事件触发Google Cloud Function?

有没有一种方法可以从所有Outlook的共享日历中检索事件(约会)?

在SQL中的特定事件之前获取所有记录

如何从事件中删除所有事件处理程序

删除全部日历中的所有事件后,如何添加事件