SQLServer EVENTDATA()函数来获取DDL 触发器信息

代码如下:

-- Create a log table
CREATE TABLE TriggerLog (LogInfo xml)

-- Create a dummy table to delete later on
CREATE TABLE TableToDelete (Id int PRIMARY KEY)

-- 新建一个新表,作为删除实验表
INSERT INTO TableToDelete VALUES(1)
GO

-- 创建一个Drop Table 的 DDL
CREATE TRIGGER StopTableDrop ON DATABASE AFTER DROP_TABLE
AS
DECLARE @EventData AS xml
SET @EventData = EVENTDATA() -- 必须要在rollback之前截获DDL信息
ROLLBACK
PRINT 'DROP TABLE attempt in database ' + DB_NAME() + '.'
INSERT INTO TriggerLog VALUES(@EventData)

执行如下删除操作:
DROP TABLE TableToDelete
会触发上面的DDL,从而回滚操作。
执行下面的Sql:
SELECT * FROM TriggerLog
查看刚才截获的DDL信息。

(0)

相关推荐

  • SQLServer EVENTDATA()函数来获取DDL 触发器信息

    复制代码 代码如下: -- Create a log table CREATE TABLE TriggerLog (LogInfo xml) -- Create a dummy table to delete later on CREATE TABLE TableToDelete (Id int PRIMARY KEY) -- 新建一个新表,作为删除实验表 INSERT INTO TableToDelete VALUES(1) GO -- 创建一个Drop Table 的 DDL CREATE

  • php获取apk包信息的方法

    有时候在使用php上传安卓apk包的时候,我们需要获取安卓apk包内的信息,本文以实例形式讲述了php获取apk包信息的方法.具体实现方法如下: <?php /*解析安卓apk包中的压缩XML文件,还原和读取XML内容 依赖功能:需要PHP的ZIP包函数支持.*/ include('./Apkparser.php'); $appObj = new Apkparser(); $targetFile = a.apk;//apk所在的路径地址 $res = $appObj->open($target

  • Python脚本获取操作系统版本信息

    查看系统版本信息是一件家常便饭的事情,有时候需要将版本信息录入到资产管理系统中,如果每次手动的去查询这些信息再录入系统那么是一件令人呢头疼的事情,如果采用脚本去完成这件事情,那么情况就有所不同了. 在Python的世界里,获取Windows版本信息和Linux的版本信息都可以采用platform模块,但platform模块也不是万能的,有些特殊的信息(比如Windows的内部版本号)这个模块拿不到,那么只能另辟蹊径了. 在Linux系统中,可以简单的认为一切都是文件,那么就算没有现成的命令可用时

  • 在Linux与Windows上获取当前堆栈信息的方法

    在编写稳定可靠的软件服务时经常用到输出堆栈信息,以便用户/开发者获取准确的运行信息.常用在日志输出,错误报告,异常检测. 在Linux有比较简便的函数获取堆栈信息: #include <stdio.h> #include <execinfo.h> #include <signal.h> #include <stdlib.h> #include <unistd.h> void handler(int sig) { void *array[5]; s

  • 在Android Studio中使用BaiduMap SDK实时获取当地位置信息

    配置BaiduMap 环境 1.在百度API中新建自己的一个APP包名和APP名需要注意和自己Android Studio 中的包名和APP名保持一致: 2.百度地图中还需要填写一个SHA1 数字签名: a.输入keytool -list -v -keystore debug.keystore,会得到三种指纹证书,选取SHA1类型的证书(密钥口令是android),这个获取到的SHA1的值和ecplise中获取的值是一样的,是作为debug用的. b.输入keytool -list -v -ke

  • linux平台使用Python制作BT种子并获取BT种子信息的方法

    本文实例讲述了linux平台使用Python制作BT种子并获取BT种子信息的方法.分享给大家供大家参考,具体如下: 最近研究了一下linux BT服务器环境的搭建,需要在linux下制作BT种子并获取BT种子信息,整理了一下这个过程: 制作BT种子软件本站下载地址. 安装: [root@localhost src]# tar zxf mktorrent-1.0.tar.gz [root@localhost src]# cd mktorrent-1.0 [root@localhost mktorr

  • SQL Server 2008中的代码安全(二) DDL触发器与登录触发器

    本文主要 涉及DDL触发器和登录触发器的应用实例. MicrosoftSQL Server 提供两种主要机制来强制使用业务规则和数据完整性:约束和触发器.触发器为特殊类型的存储过程,可在执行语言事件时自动生效.SQL Server 包括三种常规类型的触发器:DML 触发器.DDL 触发器和登录触发器. 1.当数据库中发生数据操作语言 (DML) 事件时将调用 DML 触发器.DML 事件包括在指定表或视图中修改数据的 INSERT 语句.UPDATE 语句或 DELETE 语句.DML 触发器可

  • java反射之获取类的信息方法(推荐)

    本文接上文"老生常谈反射之Class类的使用(必看篇)",以编写一个用来获取类的信息(成员函数.成员变量.构造函数)的工具类来讲解"反射之获取类的信息" 1.获取成员函数信息 /** * 获取成员函数信息 * @param obj */ public static void printClassMethodMessage(Object obj){ //获取类的信息 获取类的类类型 Class c = obj.getClass(); //获取类的名称 System.o

  • Java获取当前操作系统的信息实例代码

    主流有几种方法,一种是用下面的函数 publicstaticStringgetProperty(Stringkey) 键 相关值的描述 java.version java.version Java 运行时环境版本 java.vendor java.vendor Java 运行时环境供应商 java.vendor.url java.vendor.url Java 供应商的 URL java.home java.home Java 安装目录 java.vm.specification.version

  • Python-jenkins 获取job构建信息方式

    官方文档: 需求:当1个job启动构建后,获取它的构建状态.(成功,失败,驳回,构建中,正在排队) 关键函数: 获取job是否在排队的结果 获取正在排队构建的job队列 即pending状态中的所有job,如果没有 pending状态的job即返回1个空列表 queue_info = server.get_queue_info() 获取job构建结果 server.get_build_info(name, build_number)[ 'result'] # 构建结束 SUCCESS|FAILU

随机推荐