zoukankan      html  css  js  c++  java
  • sql存储过程等-版本控制

    数据库开发人员总在想,每次修改了函数/存储过程,我们都得自己做备份,用以历史参考,当发现错误的时候,可以回滚

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    create trigger [tr_MStran_alterschemaonly] on database for ALTER_FUNCTION, ALTER_PROCEDURE as
                                set ANSI_NULLS ON
                                set ANSI_PADDING ON
                                set ANSI_WARNINGS ON
                                set ARITHABORT ON
                                set CONCAT_NULL_YIELDS_NULL ON
                                set NUMERIC_ROUNDABORT OFF
                                set QUOTED_IDENTIFIER ON
                                declare @EventData xml
                                set @EventData=EventData()   
                                exec sys.sp_MStran_ddlrepl @EventData, 3
    GO
    DISABLE TRIGGER [tr_MStran_alterschemaonly] ON DATABASE
    GO
    /****** Object:  DdlTrigger [tr_MStran_altertable]    Script Date: 2015/12/16 16:23:54 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    create trigger [tr_MStran_altertable] on database for ALTER_TABLE as
                                set ANSI_NULLS ON
                                set ANSI_PADDING ON
                                set ANSI_WARNINGS ON
                                set ARITHABORT ON
                                set CONCAT_NULL_YIELDS_NULL ON
                                set NUMERIC_ROUNDABORT OFF
                                set QUOTED_IDENTIFIER ON
                                declare @EventData xml
                                set @EventData=EventData()   
                                exec sys.sp_MStran_ddlrepl @EventData, 1
    GO
    DISABLE TRIGGER [tr_MStran_altertable] ON DATABASE
    GO
    /****** Object:  DdlTrigger [tr_MStran_altertrigger]    Script Date: 2015/12/16 16:23:54 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    create trigger [tr_MStran_altertrigger] on database for ALTER_TRIGGER as
                                set ANSI_NULLS ON
                                set ANSI_PADDING ON
                                set ANSI_WARNINGS ON
                                set ARITHABORT ON
                                set CONCAT_NULL_YIELDS_NULL ON
                                set NUMERIC_ROUNDABORT OFF
                                set QUOTED_IDENTIFIER ON
                                declare @EventData xml
                                set @EventData=EventData()   
                                exec sys.sp_MStran_ddlrepl @EventData, 4
    GO
    DISABLE TRIGGER [tr_MStran_altertrigger] ON DATABASE
    GO
    /****** Object:  DdlTrigger [tr_MStran_alterview]    Script Date: 2015/12/16 16:23:54 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    create trigger [tr_MStran_alterview] on database for ALTER_VIEW as
                                set ANSI_NULLS ON
                                set ANSI_PADDING ON
                                set ANSI_WARNINGS ON
                                set ARITHABORT ON
                                set CONCAT_NULL_YIELDS_NULL ON
                                set NUMERIC_ROUNDABORT OFF
                                set QUOTED_IDENTIFIER ON
                                declare @EventData xml
                                set @EventData=EventData()   
                                exec sys.sp_MStran_ddlrepl @EventData, 2
    GO
    DISABLE TRIGGER [tr_MStran_alterview] ON DATABASE
    GO
    /****** Object:  DdlTrigger [TRG_VERSION_CONTROL_TABLE]    Script Date: 2015/12/16 16:23:54 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TRIGGER [TRG_VERSION_CONTROL_TABLE]
    ON DATABASE
    FOR DDL_DATABASE_LEVEL_EVENTS
    AS
    SET NOCOUNT ON
    SET ANSI_PADDING ON
    IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[VERSION_CONTROL_TABLE]') AND type in (N'U'))
    BEGIN
    CREATE TABLE [dbo].[VERSION_CONTROL_TABLE](
        [ID] [bigint] IDENTITY(1,1) NOT NULL,
        [databasename] [varchar](256) NULL,
        [eventtype] [varchar](50) NULL,
        [objectname] [varchar](256) NULL,
        [objecttype] [varchar](25) NULL,
        [sqlcommand] [nvarchar](max) NULL,
        [loginname] [varchar](256) NULL,
        [hostname] [varchar](256) NULL,
        [PostTime] [datetime] NULL,
        [Version] [int] NOT NULL,
     CONSTRAINT [PK_VERSION_CONTROL_TABLE] PRIMARY KEY CLUSTERED
    (
        [ID] ASC
    )WITH (IGNORE_DUP_KEY =OFF) ON [PRIMARY]
    ) ON [PRIMARY]
    END
    DECLARE @CurrentVersion int
    DECLARE @CurrentID int
    DECLARE @DatabaseName varchar(256)
    DECLARE @ObjectName varchar(256)
    DECLARE @data XML
    SET @data =EVENTDATA()
    INSERT INTO dbo.VERSION_CONTROL_TABLE(databasename, eventtype,objectname, objecttype, sqlcommand, loginname,Hostname,PostTime, Version)
    VALUES(
    @data.value('(/EVENT_INSTANCE/DatabaseName)[1]', 'varchar(256)'),
    @data.value('(/EVENT_INSTANCE/EventType)[1]', 'varchar(50)'),  -- value is case-sensitive
    @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(256)'),
    @data.value('(/EVENT_INSTANCE/ObjectType)[1]', 'varchar(25)'),
    @data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(max)'),
    @data.value('(/EVENT_INSTANCE/LoginName)[1]', 'varchar(256)'),
    HOST_NAME(),
    GETDATE(),
    0
    )
    SET @CurrentID = IDENT_CURRENT('VERSION_CONTROL_TABLE')
    SELECT @DatabaseName = databasename, @ObjectName = objectname FROM VERSION_CONTROL_TABLE WHERE ID = @CurrentID
    IF (@DatabaseName IS NOT NULL AND @ObjectName IS NOT NULL)
    BEGIN
        SELECT @CurrentVersion = MAX(Version) FROM VERSION_CONTROL_TABLE WHERE databasename = @DatabaseName AND objectname = @ObjectName
        UPDATE VERSION_CONTROL_TABLE SET Version = ISNULL(@CurrentVersion, 0) + 1 WHERE ID = @CurrentID
    END
    SET ANSI_PADDING OFF
    GO
    DISABLE TRIGGER [TRG_VERSION_CONTROL_TABLE] ON DATABASE
    GO
    ENABLE TRIGGER [tr_MStran_alterschemaonly] ON DATABASE
    GO
    ENABLE TRIGGER [tr_MStran_altertable] ON DATABASE
    GO
    ENABLE TRIGGER [tr_MStran_altertrigger] ON DATABASE
    GO
    ENABLE TRIGGER [tr_MStran_alterview] ON DATABASE
    GO
    ENABLE TRIGGER [TRG_VERSION_CONTROL_TABLE] ON DATABASE
    GO
  • 相关阅读:
    类风湿性关节炎患者肿瘤坏死因子拮抗剂应用和心血管疾病的风险:系统文献复习
    合用DMARDs对持续抗TNF治疗的类风湿关节炎患者的影响:来自英国风湿病生物制剂注册系统的结果
    依那西普治疗幼年型特发性关节炎患者的疗程和停药原因
    TNF治疗早期类风湿关节炎患者严重感染和恶性肿瘤的风险: 随机对照研究的荟萃分析
    生物制剂对银屑病关节炎中轴表现的疗效:对依那西普治疗的一组患者为期12个月的观察性研究
    中国银屑病患者中银屑病关节炎的患病率和特征
    TNF抑制剂在10例新近起病的难治性反应性关节炎患者中的安全性与疗效
    中信国健临床通讯2011年1月第2期目录
    甲氨蝶呤治疗早期未用过DMARD的类风湿性关节炎的疗效预测:来自SWEFOT试验开放期初期的结果
    TopCoder入门教程 sqybi完善版[转载]
  • 原文地址:https://www.cnblogs.com/davidhou/p/5086554.html
Copyright © 2011-2022 走看看