监控SQL:通过SQL Server的DML触发器来监控哪些IP对表的数据进行了修改(2)
原文:监控SQL:通过SQL Server的DML触发器来监控哪些IP对表的数据进行了修改(2)
在有些公司中,由于管理的不规范,或者是便于开发人员直接修改、部署程序,往往任何开发人员,都能登录到生产环境的数据库直接进行操作。
当然啦,一般的select语句可能不会导致什么太大的问题,但如果是delete和update,而由于某些开发人员忘记写where条件,或者条件写错了,导致一下子删除或更新了,导致数据出了问题,最关键的是当发现问题后,没有人承认这个是他干的,那该怎么办呢?
下面就是通过DML触发器,来监控哪些IP的机器,在什么时候进行了update操作:
-
--要跟踪的表
-
if OBJECT_ID('wc') is not null
-
drop table wc
-
go
-
-
-
create table wc(id int,vv varchar(10))
-
-
insert into wc
-
select 1,'abc' union all
-
select 2,'abc' union all
-
select 3,'abc'
-
go
-
-
-
--存放审核信息的表
-
if OBJECT_ID('audit_table') is not null
-
drop table audit_table
-
go
-
-
create table audit_table
-
(
-
id int identity(1,1) primary key,
-
-
spid int,
-
operation nvarchar(20),
-
exec_sql nvarchar(max),
-
-
connect_time DATETIME,
-
net_transport NVARCHAR(40),
-
protocol_type NVARCHAR(40),
-
auth_scheme NVARCHAR(40),
-
client_net_address VARCHAR(48),
-
client_tcp_port int,
-
local_net_address VARCHAR(48),
-
local_tcp_port int,
-
-
host_name NVARCHAR(128),
-
program_name NVARCHAR(128),
-
host_process_id int,
-
client_interface_name NVARCHAR(32),
-
-
exec_datetime datetime
-
)
-
go
-
-
-
--触发器
-
create trigger dbo.trigger_wc
-
on wc
-
after update
-
as
-
-
declare @t table(eventtype nvarchar(14),prama smallint,eventinfo nvarchar(max))
-
-
insert into @t(eventtype,prama,eventinfo)
-
exec('DBCC INPUTBUFFER('+@@spid+')')
-
-
insert into audit_table
-
select @@SPID,
-
'UPDATE',
-
(select eventinfo from @t),
-
(select connect_time from sys.dm_exec_connections where session_id = @@spid),
-
(select net_transport from sys.dm_exec_connections where session_id = @@spid),
-
(select protocol_type from sys.dm_exec_connections where session_id = @@spid),
-
(select auth_scheme from sys.dm_exec_connections where session_id = @@spid),
-
(select client_net_address from sys.dm_exec_connections where session_id = @@spid),
-
(select client_tcp_port from sys.dm_exec_connections where session_id = @@spid),
-
(select local_net_address from sys.dm_exec_connections where session_id = @@spid),
-
(select local_tcp_port from sys.dm_exec_connections where session_id = @@spid),
-
-
(select [host_name] from sys.dm_exec_sessions where session_id = @@spid),
-
(select [program_name] from sys.dm_exec_sessions where session_id = @@spid),
-
(select host_process_id from sys.dm_exec_sessions where session_id = @@spid),
-
(select client_interface_name from sys.dm_exec_sessions where session_id = @@spid),
-
GETDATE()
-
go
-
-
--更新数据
-
update wc
-
set vv = 'aaa'
-
-
-
--查看记录
-
select *
-
from audit_table
下面是监控结果:
监控SQL:通过SQL Server的DML触发器来监控哪些IP对表的数据进行了修改(2)的更多相关文章
- 监控SQL:通过SQL Server的DDL触发器来监控数据库结构的变化(1)
原文:监控SQL:通过SQL Server的DDL触发器来监控数据库结构的变化(1) 如果你要同步不同数据库之间的数据,首先会想到的是数据库复制技术,但如果让你同步数据库的结构,你会想到什么呢? 下面 ...
- SQL Server 数据库DML触发器 【一】
今天学习SQL Server数据库中DML触发器(DDL触发器以后有时间继续学习). 当删除一条创建有触发器的表中的内容时,触发器执行SQL语句. 1.首相先创建一张表,表名称是 [Test] , 内 ...
- SQL Server如何用触发器捕获DML操作的会话信息
需求背景 上周遇到了这样一个需求,维护人员发现一个表的数据经常被修改,由于历史原因:文档缺少:以及维护人员的经常变更,导致他们对系统也业务也不完全熟悉,他们也不完全清楚哪些系统和应用程序会对这个表的数 ...
- Sql Server系列:触发器
触发器的一些常见用途: ◊ 强制参照完整性 ◊ 常见审计跟踪(Audit Trails):这意味着写出的记录不仅跟踪大多数当前的数据,还包括对每个记录进行实际修改的历史数据. ◊ 创建与CHECK约束 ...
- SQL Server 中的触发器(trigger)
SQL Server 触发器 触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 ...
- SQL Server 2005/2008 触发器的管理和查看
1.通过可视化操作来管理和查看触发器 在Microsoft SQL Server Management Studio中,选中某一数据库的某一张表时,在“对象资源管理器详细”窗口中有“触发器”项.通过“ ...
- Sql Server数据库之触发器
阅读目录 一:触发器的优点 二:触发器的作用 三:触发器的分类 四:触发器的工作原理 五:创建触发器 六:管理触发器 概念: 触发器(trigger)是SQL server 提供给程序员和数据分析 ...
- SQL Server封闭掉 触发器递归
SQL Server关闭掉 触发器递归SQL Server 是有一个开关, 可以关闭掉 触发器递归的.EXEC sp_dboption '数据库名字', 'recursive triggers', ...
- SQL Server自动化运维系列——监控性能指标脚本(Power Shell)
需求描述 一般在生产环境中,有时候需要自动的检测指标值状态,如果发生异常,需要提前预警的,比如发邮件告知,本篇就介绍如果通过Power shell实现状态值监控 监控值范围 根据经验,作为DBA一般需 ...
随机推荐
- webpack 相关文章
webpack loader原理 由于webpack是基于Node的所以webpack只能识别.js文件,所以针对其他的文件就需要转译,这时候就需要用到我们的loader了. https://blog ...
- grib2文件格式说明
GRIB是一种二进制编码的名称,用于加工资料的传输和交换,GRIB编码的分析或预报产品是由一系列八位组构成的连续比特流组成.在GRIB2中编码资料主要分为9段. 0段——指示段八位组序号 ...
- 【html】window.open()被部分浏览器拦截问题
一.原因:1.因为在chrome的安全机制里面,非用户触发的window.open方法,是会被拦截的: 二.什么情况下不会被拦截或会被拦截? 1. $('#btn').click(function ( ...
- Spring MVC 实例:Excel视图的使用
对于Excel而言,Spring MVC所推荐的是使用AbstractXlsView,它实现了视图接口,从其命名也可以知道它只是一个抽象类,不能生成实例对象.它自己定义了一个抽象方法——buildEx ...
- 【计算机视觉】OpenCV篇(6) - 平滑图像(卷积/滤波/模糊/降噪)
平滑滤波 平滑滤波是低频增强的空间域滤波技术.空间域滤波技术即不经由傅立叶转换,直接处理影像中的像素,它的目的有两类:一类是模糊:另一类是消除噪音.空间域的平滑滤波一般采用简单平均法进行,就是求邻近像 ...
- 压力测试 Apache ab
https://www.jianshu.com/p/166a4ea8aade https://httpd.apache.org/docs/2.4/programs/ab.html 安装: 按照提示安装 ...
- 【tshark tcpdump】linux网络排查
抓包: 1.tcpdump 2.tshark是wireshark的命令行版. tshark使用示例: ,实时打印当前http请求的url # tshark -s -i eth0 -n -f 'tcp ...
- Win10安装DB2配置笔记
响应文件名:D:\data\DB2\PROD_EXPC.rsp 安装文件夹--目录:D:\Program Files\IBM\SQLLIB\ IBM SSH Server安装位置:D:\Program ...
- LODOP的ADD_PRINT_TABLE中不能总计在最后一页显示在tfoot后面
ADD_PRINT_TABLE有计算功能,还会每页显示tfoot和thead里的内容.相关其他博文:如果一个表格既有需要每页显示的tfoot,还有一个总计功能,想显示在最后一页的tfoot后面,是不行 ...
- jquery 单击选中 再次选中取消选中
html: <div id="full" class='weui-popup__container' style="background: #fff"&g ...
