zoukankan      html  css  js  c++  java
  • mssql sqlserver 自动备份存储过程的方法分享

    转自:http://www.maomao365.com/?p=7847
    摘要:
    为了更好的记录数据库中存储过程脚本的变化情况,下文采用数据库触发器来自动记载每次“存储过程”的变化(新增或修改),如下所示:
    实验环境:sql server 2008 R2
    <hr />
    处理方法:
    1 .master数据库下建立数据表:
    procBackTableInfo,包含列
     

    CREATE TABLE [procBackTableInfo](
    [keyId [int] IDENTITY(1,1) NOT NULL PRIMARY KEY ,--编号
    [dbName] sysname,--数据库名
    [procSqlInfo] [ntext] NOT NULL,--存储过程的SQL
    [ProcName] sysname,--存储过程名字
    [writeDate] [datetime] default getdate(),--修改时间
    [writeUser] sysname null --写入人
    )


    2. 建立数据库触发器,tr_procChange
     

    create trigger [tr_procChange]
    on all server 
    for CREATE_PROCEDURE,ALTER_PROCEDURE
    
    as 
    --获取事件数据
    DECLARE @data XML
    SET @data = EVENTDATA()
    
    declare @dbName sysname
    declare @procName sysname
    declare @procSqlInfo nvarchar(max)
    
    --获取新建存储过程的数据库名
    SET @dbName = @data.value('(/EVENT_INSTANCE/DatabaseName)[1]', 'sysname')
    --存储过程的名字
    set @procName = @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'sysname')
    --获取新建存储过程的内容
    set @procSqlInfo = @data.value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]', 'sysname')
    
    --将数据库名、存储过程名以及存储过程内容插入ProcSqlTable表
    insert into [master].[dbo].[procBackTableInfo]([dbName],[ProcName],[ProcSQL]) 
    values(@dbName,@procName,@procSqlInfo)
    
    GO
    
    ENABLE TRIGGER [tr_procChange] ON ALL SERVER
  • 相关阅读:
    艰苦的RAW格式数据恢复之旅
    smarty小技巧之6个标签
    smarty制作留言板的学习和思考
    ul 下的li 添加背景
    php.ini 配置详细选项
    fck与smarty的结合使用
    excel VBA 公式计算结果引用问题
    excel 统计字数公式
    bcp命令详解转载
    CTRL+C和CTRL+V不能使用的解决办法
  • 原文地址:https://www.cnblogs.com/lairui1232000/p/10017680.html
Copyright © 2011-2022 走看看