sql-server-2005 – 触发器是否有可能找到修改数据的存储过程的
发布时间:2020-12-12 06:11:13 所属栏目:MsSql教程 来源:网络整理
导读:有几个存储过程通常由几个不同的系统调用,以便对我们数据库中的几个表进行维护.有些是自动化的,有些则不是. 其中一个表有一个列有时会关闭,我们不确定何时或为何发生这种情况.我想在表格上设置一个触发器,这样我就可以看到正在改变的内容以及何时更改,但知道
有几个存储过程通常由几个不同的系统调用,以便对我们数据库中的几个表进行维护.有些是自动化的,有些则不是.
其中一个表有一个列有时会关闭,我们不确定何时或为何发生这种情况.我想在表格上设置一个触发器,这样我就可以看到正在改变的内容以及何时更改,但知道哪个程序启动了修改也很有帮助. 是否可以从触发器获取存储过程的名称?如果没有,有没有其他方法来告诉什么导致修改? (我不是在谈论用户,在这种情况下,用户的名字没有帮助). 解决方法你可以尝试:CONTEXT_INFO这是一个CONTEXT_INFO用法示例: 在执行要跟踪的插入/删除/更新的每个过程中,添加以下内容: DECLARE @string varchar(128),@CONTEXT_INFO varbinary(128) SET @string=ISNULL(OBJECT_NAME(@@PROCID),'none') SET @CONTEXT_INFO =cast('Procedure='+@string+REPLICATE(' ',128) as varbinary(128)) SET CONTEXT_INFO @CONTEXT_INFO --do insert/delete/update that will fire the trigger SET CONTEXT_INFO 0x0 --clears out the CONTEXT_INFO value 这是检索值的触发器部分: DECLARE @string varchar(128),@sCONTEXT_INFO varchar(128) SELECT @sCONTEXT_INFO=CAST(CONTEXT_INFO() AS VARCHAR) FROM master.dbo.SYSPROCESSES WHERE SPID=@@SPID IF LEFT(@sCONTEXT_INFO,9)='Procedure' BEGIN SET @string=RIGHT(RTRIM(@sCONTEXT_INFO),LEN(RTRIM(@sCONTEXT_INFO))-10) END ELSE BEGIN --optional failure code RAISERROR('string was not specified',16,1) ROLLBACK TRAN RETURN END ..use the @string (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql – 使用RedShift CURSOR插入和迭代
- 在SQLServer中调用外部扩展存储过程
- SqlServer中除法的问题
- SQL Report Builder 报表里面的常见问题分析
- MySQL 5.6 (Win7 64位)下载、安装与配置图文教程
- SQL2005中char nchar varchar nvarchar数据类型的区别和使用
- sql-server – Sql Server Management Studio 2008突然变得
- sql – 选择DISTINCT,返回整行
- sql-server – 当现有索引包含新索引中的所有列时,为什么创
- CentOS 7.2.1511 编译安装Nginx1.10.1+MySQL5.7.14+PHP7.0.