如果你要同步不同数据库之间的数据,首先会想到的是数据库复制技术,但如果让你同步数据库的结构,你会想到什么呢?

下面是一个例子,用来说明通过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)相关推荐

  1. 如何在SQL Server中使用触发器

    触发器是一种特殊的存储过程,在使用触发器之前可以与存储过程进行比较,触发器主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名称而被直接调用. 触发器主要优点如下: 触发器是自动的:当对表中 ...

  2. 表级触发器不支持ddl语句_表上的数据库级DDL触发器

    表级触发器不支持ddl语句 This article portrays the different utilization of database DDL Triggers for the Table ...

  3. 表级触发器不支持ddl语句_用于视图,过程和函数的数据库级DDL触发器

    表级触发器不支持ddl语句 In this article, we will un-riddle the ways to make use of the data definition languag ...

  4. 触发器系列一之DDL触发器

    近期出于同步数据的需求,需要创建一个具有在目标数据库具有alter table权限的帐号,但是由于该工具在alter table同步表结构时会同时频繁发起create index和drop index ...

  5. SQL优化SQL语句优化的目的

    sql的优化,要看优化什么,性能,效率,稳定性,安全性?每个方面都有很大的不同. 内容参见:https://blog.csdn.net/sinat_37464123/article/details/8 ...

  6. Sql Server系列:触发器

    触发器的一些常见用途: ◊ 强制参照完整性 ◊ 常见审计跟踪(Audit Trails):这意味着写出的记录不仅跟踪大多数当前的数据,还包括对每个记录进行实际修改的历史数据. ◊ 创建与CHECK约束 ...

  7. sql server中的触发器

    目录 1.触发器的定义 2  触发器的分类 3 :  dml触发器的工作原理 4 触发器的应用 1.insert触发器 2.delete触发器 3 update 触发器 DDL触发器 5.触发器的启用 ...

  8. c# mysql 触发器 实时,C#-.Net SqlDataAdapter和SQL Server中的触发器

    我在SQL Server中使用触发器,该触发器在SQL Server Management Studio的查询窗口中执行查询时按要求工作.触发器的目的是从一个表中获取最新值(其中一个ID对应于插入的I ...

  9. SQL server与Oracle触发器的创建与使用

    SQL Server 1创建触发器 GO BEGIN IF (object_id('WMY', 'tr') is not null) DROP trigger WMY END; GO CREATE T ...

最新文章

  1. 又一家明星机器人公司倒掉:曾是全球机器人技术50强,主打性价比AI机械臂
  2. win7 将文件的背景色改为绿色
  3. 设计模式研究(二)-Singleton
  4. matlab中predictor怎么填,在MATLAB中求解非線性有限元
  5. Okhttp同步请求源码分析
  6. pycharm新建python的快捷键_Python基础之PyCharm 的初始设置
  7. Linux虚拟机添加新硬盘的全程图解
  8. 2019年在NLP领域,资源有限的个人/团队能做哪些有价值有希望的工作?
  9. 面向对象(Python):学习笔记之类属性和类方法
  10. Selenium简介
  11. 计算机应用技术辅助设计方向课程,AutoCAD计算机辅助设计课程标准.doc
  12. 计算机网络课程思政教学目标,计算机学院举行课程思政示范教学活动
  13. 100 offer:为什么你不需要做一名全栈工程师?
  14. 以正方体一个顶点进行旋转的3D立方体动画
  15. 从行业共生到产业共生——2021 MWC上海展观察
  16. 高频信号发生器设计—串联型晶体振荡电路
  17. 2-快速攻破vuex五大核心-附案例源码
  18. 学java的就业方向_新手学习Java后有哪些就业方向?
  19. java, Statement类的介绍
  20. IBM Cloud 2015 - Invoice - 06 账期 Credit term, payment days, Net 30 days terms

热门文章

  1. mysqlbinlog unknown variable:default-character-set=gbk
  2. Ubuntu安装MyEclise16 过程差不多
  3. 重装系统后,腾讯TM2013 “应用程序无法启动,因为程序的并行配置不正确
  4. 跨林迁移用户、计算机、邮箱(1)
  5. openfire spark用户名问题续
  6. 灵机一动之优雅实现用例顺序插入
  7. 怎样找到native speaker的感觉
  8. Python怎么使用beautifulsoup来从HTML片段中删除标签
  9. 牛顿迭代法求一个数的平方根
  10. 远程部署SEP 11.RU5 安装包到 Windows 7 客户端提示“访问被拒”