监控SQL:通过SQL Server的DDL触发器来监控数据库结构的变化(1)
如果你要同步不同数据库之间的数据,首先会想到的是数据库复制技术,但如果让你同步数据库的结构,你会想到什么呢?
下面是一个例子,用来说明通过sql server中的DDL触发器,来记录create table、alter table、drop table等ddl操作。
--2.1在master数据库中建立服务器级别跟踪表 use master go create table server_eventdata (eventdata xml, principal_user nvarchar(100), login_user nvarchar(100) ) go /* select * from sys.trigger_event_types where type_name like '%table%' or type_name like '%deny%' or type_name like '%revoke%' */ --2.2建立服务器级别触发器 create trigger gyy_server on all server for create_table, alter_table, drop_table as insert into server_eventdata select EVENTDATA(),USER,SUSER_NAME() go --2.3 create database wc go use wc go create table dbo.wc_table(v int) insert into dbo.wc_table values(1) go use wc go alter table dbo.wc_table add name varchar(100) alter table dbo.wc_table add tt datetime default getdate() go --查看记录的事件 select --EVENTDATA, --里面是所有的信息 eventdata.value('(/EVENT_INSTANCE/EventType)[1]','nvarchar(100)') as '事件类型', eventdata.value('(/EVENT_INSTANCE/TSQLCommand)[1]','nvarchar(100)') as 'sql语句', eventdata.value('(/EVENT_INSTANCE/PostTime)[1]','datetime') as '执行时间' /* '登录名' + eventdata.value('(/EVENT_INSTANCE/LoginName)[1]','nvarchar(100)') + '用户名' + eventdata.value('(/EVENT_INSTANCE/UserName)[1]','nvarchar(100)') + ',授予者'+ eventdata.value('(/EVENT_INSTANCE/Grantor)[1]','nvarchar(100)') + ' 把类型为:' + eventdata.value('(/EVENT_INSTANCE/ObjectType)[1]','nvarchar(100)') + '的对象' + eventdata.value('(/EVENT_INSTANCE/DatabaseName)[1]','nvarchar(100)') + '.' + eventdata.value('(/EVENT_INSTANCE/SchemaName)[1]','nvarchar(100)') + '.' + eventdata.value('(/EVENT_INSTANCE/ObjectName)[1]','nvarchar(100)') + '的' + eventdata.value('(/EVENT_INSTANCE/Permissions/Permission)[1]','nvarchar(100)') +'权限授予给' + eventdata.value('(/EVENT_INSTANCE/Grantees)[1]','nvarchar(100)') */ from master.dbo.server_eventdata t /* 事件类型 sql语句 执行时间 (无列名) CREATE_TABLE create table dbo.wc_table(v int) 2013-11-07 10:22:31.157 NULL ALTER_TABLE alter table dbo.wc_table add name varchar(100) 2013-11-07 10:23:59.987 NULL ALTER_TABLE alter table dbo.wc_table add tt datetime default getdate() 2013-11-07 10:24:00.013 NULL */
转载于:https://blog.51cto.com/yupeigu/1368059
监控SQL:通过SQL Server的DDL触发器来监控数据库结构的变化(1)相关推荐
- 如何在SQL Server中使用触发器
触发器是一种特殊的存储过程,在使用触发器之前可以与存储过程进行比较,触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名称而被直接调用. 触发器主要优点如下: 触发器是自动的:当对表中 ...
- 表级触发器不支持ddl语句_表上的数据库级DDL触发器
表级触发器不支持ddl语句 This article portrays the different utilization of database DDL Triggers for the Table ...
- 表级触发器不支持ddl语句_用于视图,过程和函数的数据库级DDL触发器
表级触发器不支持ddl语句 In this article, we will un-riddle the ways to make use of the data definition languag ...
- 触发器系列一之DDL触发器
近期出于同步数据的需求,需要创建一个具有在目标数据库具有alter table权限的帐号,但是由于该工具在alter table同步表结构时会同时频繁发起create index和drop index ...
- SQL优化SQL语句优化的目的
sql的优化,要看优化什么,性能,效率,稳定性,安全性?每个方面都有很大的不同. 内容参见:https://blog.csdn.net/sinat_37464123/article/details/8 ...
- Sql Server系列:触发器
触发器的一些常见用途: ◊ 强制参照完整性 ◊ 常见审计跟踪(Audit Trails):这意味着写出的记录不仅跟踪大多数当前的数据,还包括对每个记录进行实际修改的历史数据. ◊ 创建与CHECK约束 ...
- sql server中的触发器
目录 1.触发器的定义 2 触发器的分类 3 : dml触发器的工作原理 4 触发器的应用 1.insert触发器 2.delete触发器 3 update 触发器 DDL触发器 5.触发器的启用 ...
- c# mysql 触发器 实时,C#-.Net SqlDataAdapter和SQL Server中的触发器
我在SQL Server中使用触发器,该触发器在SQL Server Management Studio的查询窗口中执行查询时按要求工作.触发器的目的是从一个表中获取最新值(其中一个ID对应于插入的I ...
- SQL server与Oracle触发器的创建与使用
SQL Server 1创建触发器 GO BEGIN IF (object_id('WMY', 'tr') is not null) DROP trigger WMY END; GO CREATE T ...
最新文章
- 又一家明星机器人公司倒掉:曾是全球机器人技术50强,主打性价比AI机械臂
- win7 将文件的背景色改为绿色
- 设计模式研究(二)-Singleton
- matlab中predictor怎么填,在MATLAB中求解非線性有限元
- Okhttp同步请求源码分析
- pycharm新建python的快捷键_Python基础之PyCharm 的初始设置
- Linux虚拟机添加新硬盘的全程图解
- 2019年在NLP领域,资源有限的个人/团队能做哪些有价值有希望的工作?
- 面向对象(Python):学习笔记之类属性和类方法
- Selenium简介
- 计算机应用技术辅助设计方向课程,AutoCAD计算机辅助设计课程标准.doc
- 计算机网络课程思政教学目标,计算机学院举行课程思政示范教学活动
- 100 offer:为什么你不需要做一名全栈工程师?
- 以正方体一个顶点进行旋转的3D立方体动画
- 从行业共生到产业共生——2021 MWC上海展观察
- 高频信号发生器设计—串联型晶体振荡电路
- 2-快速攻破vuex五大核心-附案例源码
- 学java的就业方向_新手学习Java后有哪些就业方向?
- java, Statement类的介绍
- IBM Cloud 2015 - Invoice - 06 账期 Credit term, payment days, Net 30 days terms
热门文章
- mysqlbinlog unknown variable:default-character-set=gbk
- Ubuntu安装MyEclise16 过程差不多
- 重装系统后,腾讯TM2013 “应用程序无法启动,因为程序的并行配置不正确
- 跨林迁移用户、计算机、邮箱(1)
- openfire spark用户名问题续
- 灵机一动之优雅实现用例顺序插入
- 怎样找到native speaker的感觉
- Python怎么使用beautifulsoup来从HTML片段中删除标签
- 牛顿迭代法求一个数的平方根
- 远程部署SEP 11.RU5 安装包到 Windows 7 客户端提示“访问被拒”