我正在创建一个触发器来跟踪过程文本的ALTER
编辑方式。
在数据库 DDL 触发器中,可以通过/EVENT_INSTANCE/TSQLCommand
.
即使经过调查EVENTDATA()
,它也没有包含之前定义的程序的值ALTER
。
有没有办法检索以前的文本,例如如何使用DELETED
表访问 DML 触发器中已删除的值?
create trigger trgDDLAuditQuery
on database
for alter_procedure
as
begin
set nocount on;
declare @data xml
set @data = EVENTDATA()
insert dbo.tblQueryAudit(ObjectName, TSQLCommand)
select @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'nvarchar(256)'),
--; Only gets currently changed procedure text, not previous one
@data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(max)')
end
GO