I created a stored procedure to log changes made to stored procedures. The issue is that the larger ones aren't being saved in their entirety and are being chopped off.
I need to be able to save the entire procedure text and it is also used as a means of reverting the a previous revision.
The trigger:
/****** Object: DdlTrigger [StoredProcUpdateInsert] Script Date: 12/05/2015 14:05:05 ******/
DROP TRIGGER [StoredProcUpdateInsert] ON DATABASE
GO
/****** Object: DdlTrigger [StoredProcUpdateInsert] Script Date: 12/05/2015 14:05:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [StoredProcUpdateInsert]
ON DATABASE
FOR CREATE_PROCEDURE, ALTER_PROCEDURE
AS
BEGIN
SET NOCOUNT ON
DECLARE @data XML
SET @data=EVENTDATA()
INSERT INTO dbo.ProcedureChanges
( ProcName ,
ProcText ,
ModifiedBy ,
DateTimeLastUpdated
)
VALUES ( @data.value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(max)') , -- ProcName - nvarchar(450)
(SELECT TOP 1 text FROM syscomments WHERE id=OBJECT_ID(@data.value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(max)'))) , -- ProcText - nvarchar(max)
@data.value('(/EVENT_INSTANCE/LoginName)[1]','nvarchar(max)') , -- ModifiedBy - nvarchar(250)
GETDATE() -- DateTimeLastUpdated - datetime
)
END
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ENABLE TRIGGER [StoredProcUpdateInsert] ON DATABASE
GO