通过触发器跟踪对表的修改sql语句

通过触发器跟踪对表的修改sql语句

ID:9961938

大小:76.00 KB

页数:8页

时间:2018-05-17

通过触发器跟踪对表的修改sql语句_第1页
通过触发器跟踪对表的修改sql语句_第2页
通过触发器跟踪对表的修改sql语句_第3页
通过触发器跟踪对表的修改sql语句_第4页
通过触发器跟踪对表的修改sql语句_第5页
资源描述:

《通过触发器跟踪对表的修改sql语句》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、如何采用触发器跟踪对表的修改王黎明(2014-03-2511:21)目标:通过触发器把修改表字段的SQL语句保存下来。基础知识:表和控制台命令说明:master.sys.dm_exec_sessions是服务器范围的视图,显示了有关所有活动用户连接和内部任务的信息。此信息包含客户端版本、客户端程序名称、客户端登录时间、登录用户、当前会话设置等。使用master.sys.dm_exec_sessions,首先可以查看当前的系统负荷并标识相关会话,然后可以通过其他动态管理视图或动态管理函数了解有关该会话的详细信息。字段说明见文档最后的字段说明。dbccinputb

2、uffer(spid):显示从客户端发送到MicrosoftSQLServer的最后一个语句。@@SPID:当前用户连接数据库进程ID注意:1:master.sys.dm_exec_sessions在SQL2008R2和SQL2012服务器里表字段不一样2:dbccinputbuffer()执行后返回的结果没法直接查询和保存,只有通过创建个表来中转数据3:因为此触发器涉及的数据比较多,影响数据库执行效率,所以用于一段时间的数据监控,检测完后就关闭此触发器触发器:select*fromsys.triggerswherename='TRI_name'sp_help

3、textTRI_TBZDKW查看触发器内容--1:根据需要的信息创建一张表(TRI_TBZDKWXGJL)表的名称建议不要用TB开头,用TRI_开头来区分我们的HIS数据表名,用于保存最后一次执行SQL的记录,表字段按需要的信息修改select*intoTRI_TBZDKWXGJLfrommaster.sys.dm_exec_sessionswhere1=2altertableTRI_TBZDKWXGJLaddcsqlvarchar(2000)--执行的SQL--2:创建TRI_inputbuffer用于保存SQL语句createtableTRI_inputb

4、uffer(ceventtypevarchar(100),cparametersvarchar(100),ceventinfovarchar(2000))--3:删除触发器droptrigger[TRI_TBZDKW]--4:创建触发器(具体语法参照SQL帮助文档,这里不做说明)createtrigger[dbo].[TRI_TBZDKW]on[dbo].[TBZDKW]FORupdateasbeginIfgetdate()>'2014-03-01'--设置触发器的有效期BeginAltertableTBZDKWdisabletriggerTRI_TBZDKW

5、--关闭触发器endDECLARE@csqlvarchar(2000)select@csql='dbccinputbuffer('+convert(varchar(10),@@SPID)+')'exec('insertintoTRI_inputbuffer(ceventtype,cparameters,ceventinfo)exec('''+@csql+''')')exec('insertintoTRI_TBZDKWXGJLselect*,(selecttop1ceventinfofromTRI_inputbuffer)frommaster.sys.dm_ex

6、ec_sessionswheresession_id=@@SPID');exec('deleteTRI_inputbuffer')endGODEMO:例子:脚本功能:把最后一次修改表里nsl字段的SQL语句保存下来DROPTABLETRI_YPKCXGJL01DROPTABLETRI_inputbuffer01droptrigger[TRI_TBYPKC01]select*intoTRI_YPKCXGJL01frommaster.sys.dm_exec_sessionswhere1=2altertableTRI_YPKCXGJL01addikcbmint--修

7、改的药品库存编码altertableTRI_YPKCXGJL01addcypbmvarchar(40)--药品编码altertableTRI_YPKCXGJL01addnqsldecimal(16,3)--修改前的数量altertableTRI_YPKCXGJL01addnhsldecimal(16,3)--执行SQL修改后的数量altertableTRI_YPKCXGJL01adddsjdatetime--修改时间altertableTRI_YPKCXGJL01addcsqlvarchar(2000)--执行的SQLcreatetableTRI_inputb

8、uffer01(ceventtypev

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。