手順テキストがどのようにALTER
編集されたかを追跡するトリガーを作成しています。
データベースのDDLトリガー内では、を介して現在のプロシージャTextにアクセスできます/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