1 CREATE TRIGGER [trg_save_change_SP]
2 ON DATABASE
3 FOR CREATE_PROCEDURE, ALTER_PROCEDURE,DROP_PROCEDURE
4 AS
5 DECLARE @data XML
6 DECLARE @InstanceName nvarchar(200),
7 @DBName nvarchar(100) ,
8 @ObjectID int,
9 @Version int ,
10 @DBUser nvarchar(100),
11 @InDateTime datetime,
12 @HostName nvarchar(200),
13 @LoginName nvarchar(100),
14 @EventName nvarchar(100),
15 @ObjectName nvarchar(200) ,
16 @TSQL nvarchar(max),
17 @ObjectType char(2),
18 @SeqNo int
19
20 SET @data = EVENTDATA()
21
22 SELECT
23 @InstanceName = @@SERVERNAME ,
24 @DBName = DB_NAME(),
25 @HostName = hostname,
26 @DBUser = CONVERT(nvarchar(100), CURRENT_USER),
27 @LoginName = @data.value('(/EVENT_INSTANCE/LoginName)[1]', 'nvarchar(100)'),
28 @EventName = @data.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)'),
29 @ObjectName= @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'nvarchar(400)'),
30 @TSQL = @data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(max)')
31 FROM master..sysprocesses WHERE spid = @@spid
32
33 SELECT @Version = ISNULL(MAX(Version),0) + 1 FROM admin.dbo.ObjectLog WHERE ObjectName = @ObjectName AND DBName = @DBName
34
35 SELECT @ObjectType = type FROM sys.objects WHERE name = @ObjectName
36
37 SELECT @SeqNo = ISNULL(MAX(SeqNo),0)+1 FROM admin.dbo.ObjectLog
38
39 INSERT admin.dbo.ObjectLog(
40 [SeqNo]
41 , [DBName]
42 , [ObjectID]
43 , [ObjectName]
44 , [Version]
45 , [EventName]
46 , [DBUser]
47 , [HostName]
48 , [LoginName]
49 , [InDateTime]
50 , [TSQL]
51 , [CheckInChk]
52 , [InstanceName]
53 , [ObjectType]
54 )
55 VALUES(
56 @SeqNo
57 , @DBName
58 , Object_ID(@ObjectName)
59 , @ObjectName
60 , @Version
61 , @EventName
62 , @DBUser
63 , LTRIM(RTRIM(@HostName))
64 , @LoginName
65 , GETDATE()
66 , @TSQL
67 , '0'
68 , @InstanceName
69 , @ObjectType)