码迷,mamicode.com
首页 > 数据库 > 详细

mssql sqlserver 自动备份存储过程的方法分享

时间:2018-11-26 00:01:15      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:text   实验   数据   mssql   database   处理   values   col   for   

转自: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

 

mssql sqlserver 自动备份存储过程的方法分享

标签:text   实验   数据   mssql   database   处理   values   col   for   

原文地址:https://www.cnblogs.com/lairui1232000/p/10017680.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!