跟踪sql server中约束键的变化

问题描述 投票:0回答:1

我正在尝试创建一个触发器,该触发器将记录一个表以跟踪所有DDL更改,包括:

  • 创建
  • ALTER
  • DROP

使用EventData()和事件类型在表,视图,函数,过程和索引上。该表必须记录以下事件的信息

  • 数据库名称
  • 模式名称
  • IP地址
  • 用户名
  • 事件类型
  • 修改日期等。

我也想跟踪添加约束和放置约束,但是没有支持该约束的事件类型。

如何将其添加到触发器中?

sql-server ssms
1个回答
1
投票

添加/删除约束的事件类型为ALTER_TABLE

这里是EventData() XML用于添加/删除约束:

<EVENT_INSTANCE>
  <EventType>ALTER_TABLE</EventType>
  <PostTime>2019-12-12T21:44:41.633</PostTime>
  <SPID>54</SPID>
  <ServerName>XAMT-ULTRABOOK</ServerName>
  <LoginName>XAMT-ULTRABOOK\XAMT</LoginName>
  <UserName>dbo</UserName>
  <DatabaseName>AdventureWorks2017</DatabaseName>
  <SchemaName>HumanResources</SchemaName>
  <ObjectName>Department</ObjectName>
  <ObjectType>TABLE</ObjectType>
  <AlterTableActionList>
    <Drop>
      <Constraints>
        <Name>DF_Department_ModifiedDate</Name>
      </Constraints>
    </Drop>
  </AlterTableActionList>
  <TSQLCommand>
    <SetOptions ANSI_NULLS="ON" ANSI_NULL_DEFAULT="ON" ANSI_PADDING="ON" QUOTED_IDENTIFIER="ON" ENCRYPTED="FALSE" />
    <CommandText>ALTER TABLE [HumanResources].[Department] DROP CONSTRAINT [DF_Department_ModifiedDate]</CommandText>
  </TSQLCommand>
</EVENT_INSTANCE>
© www.soinside.com 2019 - 2024. All rights reserved.