4
获得过程文本我创建一个触发器来跟踪过程文本已经ALTER
版。如何改变之前,DDL触发器
在数据库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
@KM:“m.definition”返回当前文本,而不是以前的文本。我也尝试过“sp_helptext”来返回值,但没有成功。 – Sung 2009-10-05 19:01:02
谢谢,KM。我想我需要制定一个不同的计划,以便按照我的要求工作。 – Sung 2009-10-06 13:12:27