经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MS SQL Server » 查看文章
mssql sqlserver 自动备份存储过程的方法分享
来源:cnblogs  作者:Adeal2008  时间:2018/11/27 10:11:35  对本文有异议

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

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

 


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

  1. create trigger [tr_procChange]
  2. on all server
  3. for CREATE_PROCEDURE,ALTER_PROCEDURE
  4. as
  5. --获取事件数据
  6. DECLARE @data XML
  7. SET @data = EVENTDATA()
  8. declare @dbName sysname
  9. declare @procName sysname
  10. declare @procSqlInfo nvarchar(max)
  11. --获取新建存储过程的数据库名
  12. SET @dbName = @data.value('(/EVENT_INSTANCE/DatabaseName)[1]', 'sysname')
  13. --存储过程的名字
  14. set @procName = @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'sysname')
  15. --获取新建存储过程的内容
  16. set @procSqlInfo = @data.value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]', 'sysname')
  17. --将数据库名、存储过程名以及存储过程内容插入ProcSqlTable
  18. insert into [master].[dbo].[procBackTableInfo]([dbName],[ProcName],[ProcSQL])
  19. values(@dbName,@procName,@procSqlInfo)
  20. GO
  21. ENABLE TRIGGER [tr_procChange] ON ALL SERVER

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号