출처 : http://www.sqler.com/491522


아래 sql을 해당 데이터베이스에 실행한 후 

나중에 변경 이력을 볼 수 있다. 


글자수가 약 4만자 정도 되면 그 뒤로 짤리는 문제가 있다.

프로시저 문자열 수 체크

SELECT A.type, A.NAME, b.definition, len(b.definition) as lens

FROM dbo.SysObjects A LEFT OUTER JOIN sys.sql_modules B ON A.ID = B.object_id

order by lens  desc


USE DATABASENAME

GO

-- 프로시저 로그용 테이블

CREATE TABLE dbo.SPLOG(

        일련번호 int IDENTITY(1,1) NOT NULL,

        오브젝트명 varchar(100) NULL,

        구분 varchar(20) NULL,

        SQLCMD varchar(max) NULL,

        수정자 varchar(20) NULL,

        수정일 datetime NULL,

 CONSTRAINT XPKSPLOG PRIMARY KEY NONCLUSTERED

(

        일련번호 ASC

))

 

GO

-- 데이터베이스 트리거

CREATE TRIGGER TRG_SPLOG ON DATABASE

FOR

CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE,

CREATE_VIEW, ALTER_VIEW, DROP_VIEW,

CREATE_FUNCTION, ALTER_FUNCTION, DROP_FUNCTION,

CREATE_TRIGGER, ALTER_TRIGGER, DROP_TRIGGER

 

AS

 

DECLARE @DATA XML

 

SET @DATA = EVENTDATA()

 

INSERT INTO DBO.SPLOG (오브젝트명, 구분, SQLCMD, 수정자, 수정일)

VALUES

(@DATA.value('(/EVENT_INSTANCE/ObjectName)[1]', 'VARCHAR(100)'),

 @DATA.value('(/EVENT_INSTANCE/EventType)[1]', 'VARCHAR(100)'),

 @DATA.value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]', 'VARCHAR(MAX)'),

 HOST_NAME(),

 GETDATE())

 


Posted by motolies
,