SQL Server中使用Trigger监控存储过程更改脚本实例

下面的Trigger用于监控存储过程的更改。
 
创建监控表:

CREATE TABLE AuditStoredProcedures( DatabaseName sysname , ObjectName sysname , LoginName sysname , ChangeDate datetime , EventType sysname , EventDataXml xml );

创建监控Trigger:

CREATE TRIGGER dbtAuditStoredProcedures ON DATABASE FOR CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE AS DECLARE @eventdata XML; SET @eventdata = EVENTDATA(); INSERT INTOAuditStoredProcedures(DatabaseName,ObjectName,LoginName,ChangeDate,EventType,EventDataXml) VALUES ( @eventdata.value('(/EVENT_INSTANCE/DatabaseName)[1]','sysname') , @eventdata.value('(/EVENT_INSTANCE/ObjectName)[1]', 'sysname') , @eventdata.value('(/EVENT_INSTANCE/LoginName)[1]', 'sysname') , GETDATE() , @eventdata.value('(/EVENT_INSTANCE/EventType)[1]', 'sysname') , @eventdata );

时间: 2024-08-30 22:29:16

SQL Server中使用Trigger监控存储过程更改脚本实例的相关文章

SQL Server中使用Trigger监控存储过程更改脚本实例_MsSql

下面的Trigger用于监控存储过程的更改.   创建监控表:   CREATE TABLE AuditStoredProcedures( DatabaseName sysname , ObjectName sysname , LoginName sysname , ChangeDate datetime , EventType sysname , EventDataXml xml ); 创建监控Trigger: CREATE TRIGGER dbtAuditStoredProcedures O

SQL Server中使用REVERT切换存储过程执行上下文

问题 以前,我们学习过在SQL Server 2005中用EXECUTE AS命令来授予权限的方法,你已经看到如何用EXECUTE AS从句来授予粒度权限.在一个可编程的对象比如存储过程或函数内切换上下文是很重要的,尤其是如果访问存储过程的用户没有足够的权限去运行一个代码块时.但为了把它更加粒度化,只有在需要的时候和返回到调用方的原来的执行上下文情况下,我们才允许切换执行上下文.我们要怎么实现这一点? 专家解答 SQL Server 2005中的EXECUTE AS从句让我们拥有控制代码模块执行

浅析SQL Server中包含事务的存储过程_MsSql

先来看一个概念: 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全地不执行.那么在存储过程里添加事务,则可以保证该事务里的所有sql代码要么完全执行要么完全不执行. 举个简单的带事务的存储过程: Begin Set NOCOUNT ON; --不返回影响行数 Set XACT_ABORT ON; --使用存储过程执行事务需要开启XACT_ABORT参数(默认为OFF) delete from table1 where n

在SQL Server中重新编译存储过程

在执行诸如添加索引或更改索引列中的数据等操作更改了数据库时,应重新编译访问数据库表的原始查询计划以对其重新优化.在 Microsoft SQL Server 2005 重新启动后第一次运行存储过程时自动执行此优化.当存储过程使用的基础表发生变化时,也会执行此优化.但如果添加了存储过程可能从中受益的新索引,将不自动执行优化,直到下一次 Microsoft SQL Server 重新启动后再运行该存储过程时为止.在这种情况下,强制在下次执行存储过程时对其重新编译会很有用. 必要时,强制重新编译存储过

ms sql server中存储过程入门教程详解

一.存储过程的概念 T-SQl和C语言一样 ,是一门结构化的语言. 什么是存储过程? 存储过程是SQL查询语句与控制流程语句的预编译集合,并以特定的名称保存在数据库中.存储过程也是数据库对象 分类: 系统存储过程: 以sp_或xp_打头 用户自定义  :以proc_打头 存储过程的优点: 执行速度快 效率高 模块式编程  减少网络流量     提高安全性 二.系统存储过程 SQl server 的系统存储过程保存在master数据库中,且所有命名的系统存储过程命名以"Sp_"开头.在m

sql server中扩展存储过程随笔(几个有用的PROCEDURE小总结)

server|存储过程 在sql server中扩展存储过程直接使用的机会不是很多 我把我知道的几个有用的扩展存储过程使用方式总结如下:     --获得MS SQL的版本号 execute master..sp_msgetversion go Character_Value                              -------------------- ----------- ----------- 8.00.760             1           3  

SQL Server中如何track存储过程的编译次数

有个script我们很熟悉,是用来去查找当前SQL Server中哪些存储过程变重编译的次数最多的: --Gives you the top 25 stored procedures that have been recompiled. select top 25 sql_text.text, sql_handle, plan_generation_num,&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; exec

SQL Server中存储过程比直接运行SQL语句慢的原因

原文:SQL Server中存储过程比直接运行SQL语句慢的原因     在很多的资料中都描述说SQLSERVER的存储过程较普通的SQL语句有以下优点: 1.       存储过程只在创造时进行编译即可,以后每次执行存储过程都不需再重新编译,而我们通常使用的SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度. 2.       经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作.当对数据库进行复杂操作时(如对多个表进行 Upd

在SQL SERVER中实现Split功能的函数,并在存储过程中使用

代码 CREATE FUNCTION dbo.SplitString(          @Expression NVARCHAR(4000), --要拆分的字符串          @Delimiter NVARCHAR(100), --拆分符号          @n INT --要得到已拆分的返回字符串位置)RETURNS NVARCHAR(4000)ASBEGINDECLARE @p INTSET @p = CharIndex(@Delimiter,@Expression)IF @p >