首页 > 数据库 >记录Sql Server 数据库数据库表是够新触发器时当前执行sql

记录Sql Server 数据库数据库表是够新触发器时当前执行sql

时间:2024-12-09 11:09:59浏览次数:4  
标签:触发器 dbo 记录 数据库 更新 Server sql proc

  因为一个表的记录怎么也没有查到是什么原因,表的一个字段全给更新成一样了。看了所有代码也没有找到原因,这就产生了这样一个需求,我需要用一个表来记录当前这个表在更新记录时,就记录下这段SQL。

最后通过百度知道 dbcc inputbuffer(@@spid) 能返回当前执行的sql,这下就能监控到具体个表怎么被更新了。

 

 记录日志表

CREATE TABLE [dbo].[HouseSubscription_Log](
[EventType] [varchar](50) NULL,
[Parameters] [int] NULL,
[EventInfo] [nvarchar](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

 

  

这里用了一个存储过程,一个返回当前正在被执行的sql记录:proc_dbccInputbuffer。

  第二个存储过程是个触发器,用来监控这个被更新时的sql,然后向一个日志表插入这段sql代码 。

 

 

--当前正在执行的sql
create proc proc_dbccInputbuffer
as
declare @tsql varchar(max);
select @tsql='DBCC INPUTBUFFER('+cast(@@SPID as varchar(3))+')'
exec (@tsql);
go

--更新触发器
create  trigger trg_TableUpdate dbo.HouseSubscription_Log 插入更新语句
ON  HouseSubscription
after update
AS
begin
declare @sqlText nvarchar(2000) ;
select @sqlText=' insert into dbo.HouseSubscription_Log exec proc_dbccInputbuffer '
exec (@sqlText);
end;
go

至此就能记录表的更新语句。

标签:触发器,dbo,记录,数据库,更新,Server,sql,proc
From: https://www.cnblogs.com/softicu/p/18594454

相关文章

  • mysqli_real_escape_string详解
    mysqli_real_escape_string是PHP中用于防止SQL注入的一种函数。它通过转义特殊字符来确保用户输入的安全性。以下是对该函数的详细介绍:函数概述用途:用于对字符串进行转义,以便安全地将其插入到SQL查询中。语法:stringmysqli_real_escape_string(mysqli$link,string......
  • Oracle数据库管理与开发基础教程 (四)
    Oracle数据表Oracle表和数据类型表是数据库数据存储的基本单位,是真正存储各种各样数据的对象逻辑结构:行列组成的二维表类型数据表有多种类型:关系表,包括规则表(堆组织表)、簇表、分区表。索引组织表(IOT)临时表外部表对象表嵌套表表结构当中又有许多的数据类型如varch......
  • winserver离线部署Python服务(vitualenv)
    python项目开发完成后,经常遇到服务器无法访问互联网,所以导致部署时无法在线安装依赖包,本篇记录了离线部署python环境的步骤。1、下载Python安装包前往Python官网下载地址下载对应版本的Python安装包,如python-3.9.12-amd64.exe。 2、在项目中创建requirements.txt,记录依赖名称......
  • MySql 9 in Docker 主从切换
    继上一篇《MySql9inDocker利用克隆插件搭建主从》我们说了主从复制后,那么我们接下来说说如何手动的进行主从切换。动手~1.原主库设置切断应用对主库的访问主库设置为只读状态setglobalread_only=ON;setglobalsuper_read_only=ON;主库执行SELECT@@gtid_exec......
  • hhdb数据库介绍(10-45)
    安全数据加密加密规则列表页仅加载当前页面配置:添加、删除、编辑加密规则,触发局部同步加载。加载成功后,添加配置才能生效。同样也可以执行整体同步加载(页面右上角),来同步加密规则。搜索:加密列表信息过多时,可通过逻辑库名、表名、加密方式、加密列来搜索。也可以在搜索框输......
  • SQL提高查询效率【in、not in、between、like】等条件讲述
    在使用SQL语句查询数据库记录时,如果要查询相同的内容,有着不同的多种方法。仍然,尽管使用多种方法可以得到相同的结果,但是,如果您使用不同的方法,在执行效益上是截然不同的。因此,我们得仔细考虑,如果要查询相同结果,该使用哪种语句,执行效益比较好。这就是SQL语句的优化。......
  • Mysql到底是个什么玩意?(初识Mysql)
    学编程和数据的小伙伴应该都听说过MySQL,仿佛全世界的编程都离不开mysql,那么mysql到底是什么,为什么大家都在用它。Mysql是什么?它一个流行的开源关系型数据库管理系统(RDBMS),它将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。Mysql被广......
  • 数据分析常见到的Excel,Mysql,Hadoop的区别
    Excel是一款电子表格软件,设计初衷是用于数据的记录、分析和可视化,功能以交互性和灵活性为主。用于小型数据处理和分析任务。适合个人或团队的日常办公需求。优势:1.直观性强:•通过界面直接操作,无需编程基础。•支持拖拽、公式计算和图表生成,易于快速可视化数据。2.灵......
  • 【2选1】MySQL异步复制 vs 同步复制:如何选择最适合你的数据同步策略?
    ......
  • MySQL元数据锁MDL导致无法操作数据库的解决方法
    本文主要介绍元数据锁MDL导致无法操作数据库的解决方法以及如何避免元数据锁阻塞。MetaDataLock主要为了保证元数据的一致性,用于处理不同线程操作同一数据对象的同步与互斥问题。MySQL5.5版本开始,引入了MDL锁,MDL锁是表级别的锁,有些类型的MDL锁会导致读写操作都无法进行,导致S......