欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁(yè) > 知識(shí)庫(kù) > SQL Server實(shí)現(xiàn)用觸發(fā)器捕獲DML操作的會(huì)話(huà)信息【實(shí)例】

SQL Server實(shí)現(xiàn)用觸發(fā)器捕獲DML操作的會(huì)話(huà)信息【實(shí)例】

熱門(mén)標(biāo)簽:奧威地圖標(biāo)注多個(gè)地方 百度地圖標(biāo)注不同路線(xiàn) 優(yōu)質(zhì)地圖標(biāo)注 智能語(yǔ)音外呼系統(tǒng)選哪家 怎樣在地圖上標(biāo)注路線(xiàn)圖標(biāo) 京華物流公司地圖標(biāo)注 外呼系統(tǒng)電銷(xiāo)專(zhuān)用 千呼電銷(xiāo)機(jī)器人價(jià)格 武漢長(zhǎng)沙外呼系統(tǒng)方法和技巧

需求背景

上周遇到了這樣一個(gè)需求,維護(hù)人員發(fā)現(xiàn)一個(gè)表的數(shù)據(jù)經(jīng)常被修改,由于歷史原因;文檔缺少;以及維護(hù)人員的經(jīng)常變更,導(dǎo)致他們對(duì)系統(tǒng)也業(yè)務(wù)也不完全熟悉,他們也不完全清楚哪些系統(tǒng)和應(yīng)用程序會(huì)對(duì)這個(gè)表的數(shù)據(jù)進(jìn)行操作。現(xiàn)在他們想找出有哪些服務(wù)器,哪些應(yīng)用程序會(huì)對(duì)這個(gè)表進(jìn)行INSERT、UPDATE操作。那么問(wèn)題來(lái)了,怎么去解決這個(gè)問(wèn)題呢?

解決方案

由于數(shù)據(jù)庫(kù)版本是標(biāo)準(zhǔn)版,我們選擇了使用觸發(fā)器來(lái)捕獲進(jìn)行DML操作的會(huì)話(huà)的相關(guān)信息,例如,Host_Name、Program_Name等 ,選擇觸發(fā)器是因?yàn)楹?jiǎn)單直接。我們先創(chuàng)建一個(gè)表名為T(mén)EST的表,假設(shè)我們想監(jiān)控有哪些應(yīng)用服務(wù)器,以及那些應(yīng)用程序會(huì)對(duì)表TEST進(jìn)行INSERT、UPDATE操作。

USE [AdventureWorks2014]

GO

 

IF NOT EXISTS (SELECT 1 FROM sys.sysobjects WHERE id=object_id(N'[dbo].[TEST]') AND OBJECTPROPERTY(id, N'IsTable')=1 )

BEGIN

CREATE TABLE [dbo].[TEST](

  [OBJECT_ID] [INT] NOT NULL,

  [NAME] [VARCHAR](8) NULL,

  CONSTRAINT PK_TEST  PRIMARY KEY (OBJECT_ID)

) 

END

GO

 

INSERT INTO dbo.TEST

SELECT 1, 'kerry' UNION ALL

SELECT 2, 'jimmy'

那么我們接下來(lái)在表上面新增幾個(gè)字段 [HOST_NAME]、[PROGRAM_NAME]、LOGIN_NAME用來(lái)記錄最后一次修改該記錄的會(huì)話(huà)信息,另外創(chuàng)建觸發(fā)器TRG_TEST來(lái)更新這幾個(gè)字段

ALTER TABLE TEST ADD [HOST_NAME] NVARCHAR(256)

ALTER TABLE TEST ADD [PROGRAM_NAME] NVARCHAR(256);

ALTER TABLE TEST ADD LOGIN_NAME NVARCHAR(256);

 

CREATE TRIGGER TRG_TEST ON dbo.TEST AFTER 

INSERT,UPDATE

AS 

 

IF (EXISTS(SELECT 1 FROM INSERTED))

BEGIN

 

  UPDATE dbo.TEST

  SET   dbo.TEST.[HOST_NAME] = ( SELECT host_name

                   FROM  sys.dm_exec_sessions

                   WHERE session_id = @@SPID

                  ) ,

      dbo.TEST.PROGRAM_NAME = ( SELECT  program_name

                   FROM   sys.dm_exec_sessions

                   WHERE   session_id = @@SPID

                  ) ,

      dbo.TEST.LOGIN_NAME = ( SELECT login_name

                  FROM  sys.dm_exec_sessions

                  WHERE  session_id = @@SPID

                 )

  FROM  dbo.TEST t

      INNER JOIN INSERTED i ON t.OBJECT_ID = i.OBJECT_ID

END

GO

接下來(lái),我們來(lái)簡(jiǎn)單測(cè)試一下,如下所示,分布插入、更新一條記錄

INSERT INTO dbo.TEST(OBJECT_ID,NAME)

SELECT 3,'ken'

 

UPDATE dbo.TEST SET NAME='Richard' WHERE OBJECT_ID=2;

如下所示,因?yàn)槲抑皇怯肧SMS更新,插入數(shù)據(jù),所以捕獲的是Microsoft SQL Server Management Studio - Query。

這這種方式還有一個(gè)弊端,那就是如果應(yīng)用程序的SQL,寫(xiě)得不夠健壯的話(huà),那么增加字段就會(huì)導(dǎo)致以前的應(yīng)用程序出現(xiàn)問(wèn)題,例如,應(yīng)用程序有下面這樣的SQL,增加字段后,它就會(huì)報(bào)錯(cuò)。

INSERT INTO dbo.TEST

SELECT 3,'ken'

所以這種方案不太可行,會(huì)增加應(yīng)用程序出現(xiàn)Bug的風(fēng)險(xiǎn)。那么其實(shí)我們可以新建一個(gè)表,每當(dāng)原表TEST有INSERT、UPDATE操作時(shí),通過(guò)觸發(fā)器捕獲會(huì)話(huà)進(jìn)程信息,然后插入該表(注意,新建的表包含源表的主鍵字段,例如這里TEST的主鍵字段為OBJECT_ID,那么我們下面就包含OBJECT_ID)

USE [AdventureWorks2014]

GO

 

DROP TABLE dbo.[TRG_TEST_SESSION_INFO];

GO

 

IF NOT EXISTS (SELECT 1 FROM sys.sysobjects WHERE id=object_id(N'[dbo].[TRG_TEST_SESSION_INFO]') AND OBJECTPROPERTY(id, N'IsTable')=1 )

BEGIN

CREATE TABLE [TRG_TEST_SESSION_INFO](

  [ID]        INT NOT NULL IDENTITY(1,1),

  [OBJECT_ID]    INT,

  [HOST_NAME]    NVARCHAR(256),

  [PROGRAM_NAME]   NVARCHAR(256),

  [LOGIN_NAME]    NVARCHAR(256),

  CONSTRAINT PK_TRG_TEST_SESSION_INFO  PRIMARY KEY (ID)

) 

END

GO

 

CREATE TRIGGER TRG_TEST_SESSION ON dbo.TEST

AFTER INSERT ,UPDATE

AS

 

IF (EXISTS(SELECT 1 FROM INSERTED))

BEGIN

 

  /*

  INSERT INTO dbo.[TRG_TEST_SESSION_INFO]

  SELECT (SELECT I.OBJECT_ID FROM INSERTED I), HOST_NAME,program_name,login_name

                   FROM  sys.dm_exec_sessions

                   WHERE session_id = @@SPID*/

  INSERT INTO dbo.[TRG_TEST_SESSION_INFO]

  SELECT I.OBJECT_ID, S.HOST_NAME,S.PROGRAM_NAME,S.LOGIN_NAME

                   FROM  sys.dm_exec_sessions s,

                      Inserted i

                   WHERE session_id = @@SPID

 

 

END

GO

在運(yùn)行一小段時(shí)間后,如果已經(jīng)找出了哪些服務(wù)器、哪些應(yīng)用程序會(huì)對(duì)這些表操作后,那么就必須馬上刪除這些表和觸發(fā)器,避免長(zhǎng)時(shí)間運(yùn)行,影響性能。

以上這篇SQL Server實(shí)現(xiàn)用觸發(fā)器捕獲DML操作的會(huì)話(huà)信息【實(shí)例】就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 關(guān)于喜憂(yōu)參半的SQL Server觸發(fā)器詳解
  • 利用SQL Server觸發(fā)器實(shí)現(xiàn)表的歷史修改痕跡記錄
  • SQLSERVER對(duì)加密的存儲(chǔ)過(guò)程、視圖、觸發(fā)器進(jìn)行解密(推薦)
  • SQL Server 使用觸發(fā)器(trigger)發(fā)送電子郵件步驟詳解
  • SQL Server:觸發(fā)器實(shí)例詳解
  • SqlServer觸發(fā)器詳解
  • SqlServer實(shí)現(xiàn)類(lèi)似Oracle的before觸發(fā)器示例
  • SQL SERVER中各類(lèi)觸發(fā)器的完整語(yǔ)法及參數(shù)說(shuō)明
  • SQL SERVER 觸發(fā)器介紹
  • SQL Server誤區(qū)30日談 第4天 DDL觸發(fā)器就是INSTEAD OF觸發(fā)器
  • SQL Server 觸發(fā)器詳情

標(biāo)簽:益陽(yáng) 防疫戰(zhàn)設(shè) 來(lái)賓 天水 宿州 七臺(tái)河 威海 銅仁

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server實(shí)現(xiàn)用觸發(fā)器捕獲DML操作的會(huì)話(huà)信息【實(shí)例】》,本文關(guān)鍵詞  SQL,Server,實(shí),現(xiàn)用,觸發(fā)器,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQL Server實(shí)現(xiàn)用觸發(fā)器捕獲DML操作的會(huì)話(huà)信息【實(shí)例】》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于SQL Server實(shí)現(xiàn)用觸發(fā)器捕獲DML操作的會(huì)話(huà)信息【實(shí)例】的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    一区二区三区欧美在线观看| 成人免费av片| 农村黄色一级片| 中文字幕欧美激情一区| 国产一区二区主播在线| 色屁屁草草影院ccyy.com| 精品少妇一区二区三区在线播放 | 日韩一级片av| 国产精品久线观看视频| 国产91对白在线观看九色| 亚洲综合图片一区| 中文在线一区二区| 成熟亚洲日本毛茸茸凸凹| 波兰性xxxxx极品hd| 欧美国产97人人爽人人喊| 国产福利一区二区三区在线视频| 无码人中文字幕| 欧美精彩视频一区二区三区| 成人一区二区三区视频| www青青草原| 一区二区三区免费看视频| 性活交片大全免费看| 在线成人小视频| 日本午夜精品视频在线观看| 人人妻人人藻人人爽欧美一区| 精品1区2区在线观看| 国产精品资源站在线| 一本一道综合狠狠老| 亚洲欧美一区二区久久| 日韩成人av影院| 日韩欧美在线影院| 紧缚捆绑精品一区二区| 乱老熟女一区二区三区| 亚洲欧美日韩在线| 波多野结衣视频播放| 精品国产免费视频| 国产成人免费网站| 欧美在线999| 蜜桃久久久久久久| 97在线观看免费高| 一区二区三区日本| 丰满圆润老女人hd| 亚洲国产精华液网站w| 日本一区二区三区在线免费观看| 国产高潮视频在线观看| 91精品免费观看| 激情图片小说一区| 色综合婷婷久久| 亚洲高清免费视频| 一级片久久久久| 亚洲黄色av一区| 欧美老熟妇乱大交xxxxx| 国产精品久线在线观看| 黑人玩弄人妻一区二区三区| 精品国一区二区三区| www.亚洲精品| 日韩一级二级三级| 国产成人精品一区二区三区四区 | 欧美日产在线观看| 久久福利视频一区二区| 日本久久一区二区三区| 日本美女视频一区二区| 亚洲一级生活片| 丝袜脚交一区二区| 中日韩一级黄色片| 日韩av午夜在线观看| 国产精品精品软件男同| 婷婷开心激情综合| 久草福利资源在线| 午夜欧美在线一二页| 激情高潮到大叫狂喷水| 婷婷综合久久一区二区三区| 亚洲人做受高潮| 日韩一区精品字幕| 色婷婷久久久亚洲一区二区三区 | 午夜精品福利在线| www.xxxx日本| 蜜桃av一区二区在线观看| 亚洲国产成人精品综合99| 蜜臀av亚洲一区中文字幕| 色综合天天综合色综合av| 免费在线观看精品| 欧美在线一区二区三区| 国产一区二区精品在线观看| 69久久夜色精品国产69蝌蚪网| 国产成人久久精品77777最新版本| 91精品一区二区三区久久久久久| 国产69精品一区二区亚洲孕妇| 日韩精品一区二区三区在线播放| 99精品久久只有精品| 久久九九国产精品| 日本一级片在线播放| 亚洲色图丝袜美腿| 少妇愉情理伦三级| 日av在线不卡| 欧美三级视频在线观看| 成人小视频在线| 国产亚洲精品久| 好吊日免费视频| 午夜视频一区二区三区| 欧美三级韩国三级日本三斤| 成人三级在线视频| 亚洲国产精品成人综合色在线婷婷| 粉嫩av蜜桃av蜜臀av| 午夜久久久久久久久久一区二区| 色爱区综合激月婷婷| 成人性生交大合| 中文字幕欧美激情一区| 九九热免费在线| 麻豆成人综合网| 日韩久久久精品| 国产精品一级黄片| 亚洲成a天堂v人片| 欧美群妇大交群中文字幕| 91香蕉视频污| 亚洲欧美日韩综合aⅴ视频| 日韩女优一区二区| 粉嫩高潮美女一区二区三区| 国产免费成人在线视频| 国产午夜福利一区| 国内欧美视频一区二区| 精品美女被调教视频大全网站| 久久久久麻豆v国产精华液好用吗 在线观看国产免费视频 | 欧洲一区在线电影| 99久久精品免费看| 自拍偷拍亚洲综合| 91精品一区二区三区蜜桃| 国产高清精品网站| 欧美极品少妇xxxxⅹ高跟鞋| 麻豆网址在线观看| 风流少妇一区二区| 专区另类欧美日韩| 色av一区二区| 免费看91视频| 视频精品一区二区| 日韩欧美www| 亚洲av无码一区二区三区人| 久久97超碰色| 欧美国产一区二区在线观看| 日韩欧美综合视频| 91亚洲精品乱码久久久久久蜜桃| 亚洲欧美日本韩国| 欧美福利视频导航| 丰满少妇一区二区三区| 久久99精品一区二区三区 | 久久亚洲AV成人无码国产野外| 欧美aaa在线| 国产亚洲精品超碰| 国产一二三区精品| 久久黄色一级视频| 亚洲成a人v欧美综合天堂| 日韩欧美激情一区| 中文字幕第69页| 北条麻妃国产九九精品视频| 一区二区国产盗摄色噜噜| 在线成人av网站| 在线观看日本中文字幕| 国产成人av影院| 一区二区三区在线视频免费| 欧美精品日日鲁夜夜添| 白白色免费视频| 丰满白嫩尤物一区二区| 亚洲综合丁香婷婷六月香| 日韩一区二区电影| 天堂网av2018| 中文字幕亚洲日本| 男女性色大片免费观看一区二区| 国产亚洲人成网站| 91福利国产成人精品照片| 国产精品久久久免费观看| 国产在线看一区| 一区二区三区四区国产精品| 欧美成人艳星乳罩| 免费在线黄色网| 少妇精品无码一区二区三区| 国产揄拍国内精品对白| 亚洲另类在线视频| 欧美zozozo| 色先锋资源久久综合| 亚洲国产第一区| 成人午夜视频网站| 日韩激情av在线| 国产精品丝袜一区| 日韩一区二区高清| 色天天综合久久久久综合片| 给我看免费高清在线观看| 成人一区二区三区视频在线观看| 偷拍一区二区三区四区| 国产精品美女久久久久久久| 欧美电影一区二区| 欧美特黄一级片| 在线观看国产网站| 99精品久久免费看蜜臀剧情介绍| 美国三级日本三级久久99| 亚洲日本青草视频在线怡红院 | 亚洲熟女少妇一区二区| 黄色av电影网站| 成人激情图片网| 老司机午夜精品| 亚洲国产精品人人做人人爽|