Advertisement
Guest User

Untitled

a guest
Jul 19th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.36 KB | None | 0 0
  1. CREATE TRIGGER [DTR_SaveProgrammabilityChangeHistory]
  2. ON DATABASE WITH EXECUTE AS SELF
  3. FOR CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE
  4.     ,CREATE_FUNCTION, ALTER_FUNCTION, DROP_FUNCTION
  5.     ,CREATE_TRIGGER, ALTER_TRIGGER, DROP_TRIGGER
  6.     ,CREATE_TABLE
  7.  
  8. /*
  9. Типа автоматическая версионность хранимых процедур и функций. При любом DDL-действии с ними, сохраняет код действия в таблице mgmt.DevProgrammabilityVersionControl.
  10. При необходимости можно в нее посмотреть и для конкретной процедуры или функции достать текст на какое-либо число.
  11. */
  12. AS
  13.     SET NOCOUNT ON;
  14.  
  15.     DECLARE @data XML
  16.            ,@objectName NVARCHAR(128)
  17.            ,@schemaName NVARCHAR(128)
  18.            ,@commandText NVARCHAR(MAX)
  19.            ,@objectType NVARCHAR(100)
  20.            ,@action NVARCHAR(100)
  21.            ;
  22.  
  23.     SET @data = EVENTDATA();
  24.     SELECT @objectName = @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'sysname')
  25.           ,@schemaName = @data.value('(/EVENT_INSTANCE/SchemaName)[1]', 'sysname')
  26.           ,@commandText = @data.value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)')
  27.           ,@objectType = @data.value('(/EVENT_INSTANCE/ObjectType)[1]', 'nvarchar(100)')
  28.           ,@action = @data.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)')
  29.           ;
  30.     IF @objectType = 'TABLE'
  31.         AND REPLACE(@objectName, '_', '') NOT LIKE '%20[0-9][0-9][0-1][0-9][0-3][0-9]%'
  32.         AND UPPER(@objectName) NOT LIKE '%TEST%'        
  33.             RETURN;
  34.  
  35.     INSERT INTO mgmt.DevProgrammabilityVersionControl(
  36.         ObjSchema
  37.         ,ObjName
  38.         ,ObjNewText
  39.         ,ObjVersionId
  40.         ,ObjType
  41.         ,ObjAction
  42.         ,LoginName
  43.         )
  44.     SELECT
  45.         @schemaName
  46.         ,@objectName
  47.         ,@commandText
  48.         ,ISNULL(MAX(vc.ObjVersionId), 0) + 1
  49.         ,@objectType
  50.         ,@action
  51.         ,ORIGINAL_LOGIN()
  52.     FROM
  53.         mgmt.DevProgrammabilityVersionControl  vc
  54.     WHERE
  55.         vc.ObjName = @objectName
  56.         AND vc.ObjSchema = @schemaName
  57.     ;
  58. GO
  59. DISABLE TRIGGER [DTR_SaveProgrammabilityChangeHistory] ON DATABASE
  60. GO
  61. ENABLE TRIGGER [DTR_SaveImportantObjects] ON DATABASE
  62. GO
  63. ENABLE TRIGGER [DTR_SaveProgrammabilityChangeHistory] ON DATABASE
  64. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement