当前位置:w88优德官网网文章中心网站开发SQL Server → SQL点滴24监测表的变化

SQL点滴24监测表的变化

减小字体 增大字体 作者:admin  来源:www.hack50.com  发布时间:2012-4-15 10:11:39
 在网上看到一篇关于监测表中的插入,更新,删除的方法,使用触发器实现的,很有价值。 有时候,我们在某一重要的时间段需要监控某张表的变化情况,包含插入、更新、删除。举例来说,当我们把数据导出到外部的系统时,我们希望导出的是全部的数据,而且最好是导出上次导出之后变动的数据。 作为DBA,我们可采传统的触发器操作,来构建一个元数据表或一个时间戳列来监控数据的变化。 代码如下:Code Listing 1 该代码在 SQL 2005(SP3), SQL 2008 R2 (RTM with cu5)测试通过 :
-------------------  --Method 1: TRIGGER  -------------------  --Base Table Definition  IF OBJECT_ID('CheckSumTest', 'U') IS NOT NULL DROP TABLE CheckSumTest  GO  CREATE TABLE CheckSumTest  id int IDENTITY(1,1) NOT NULL PRIMARY KEY,  vc1 varchar(1) NOT NULL,  vc2 varchar(1) NOT NULL  GO  INSERT dbo.CheckSumTest (vc1, vc2) SELECT 'a', 'b'  INSERT dbo.CheckSumTest (vc1, vc2) SELECT 'b', 'a'  GO  --Create Audit Summary Table to hold Meta-Data  IF OBJECT_ID('dbo.TableAuditSummary', 'U') IS NOT NULL DROP TABLE dbo.TableAuditSummary  CREATE TABLE dbo.TableAuditSummary  ( id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,  TableName sysname NOT NULL,  LastUpdate DATETIME NOT NULL,  LastExport DATETIME NOT NULL  GO  INSERT dbo.TableAuditSummary (TableName, LastUpdate, LastExport) VALUES ('dbo.CheckSumTest', GETDATE(), GETDATE())  GO  --Tables that need exporting  SELECT * FROM dbo.TableAuditSummary WHERE LastUpdate>LastExport  --Create Trigger on all Base Tables  --This fires on any insert/update/delete and writes new LastUpdate column for the table set to Current Date and Time  IF OBJECT_ID('dbo.trg_CheckSumTest_MaintainAuditSummary', 'TR') IS NOT NULL DROP TRIGGER dbo.trg_CheckSumTest_MaintainAuditSummary  GO  CREATE TRIGGER dbo.trg_CheckSumTest_MaintainAuditSummary  ON dbo.CheckSumTest  AFTER INSERT, UPDATE, DELETE  AS  BEGIN  IF (object_id('dbo.CheckSumTest') IS NOT NULL)  UPDATE dbo.TableAuditSummary SET LastUpdate=GETDATE() WHERE TableName='dbo.CheckSumTest'  END  GO  --Make an Update  UPDATE dbo.CheckSumTest SET vc1='b', vc2='a' WHERE id=1  UPDATE dbo.CheckSumTest SET vc1='a', vc2='b' WHERE id=2  --Check Meta-Data  SELECT * FROM dbo.TableAuditSummary WHERE LastUpdate>LastExport  --When we have Exported the data, we run the following to reset MetaData  UPDATE dbo.TableAuditSummary SET LastExport=GETDATE() WHERE LastUpdate>LastExport 
最近我正在读关天SQLSERVER在线帮助(BOL)相关的知识, 我接触到了 SQL Server CHECKSUM(), BINARY_CHECKSUM(), and CHECKSUM_AGG() 这几个函数, 由此突然想到这些函数是不是也可以监控表的数据变化,而事实证明CHECKSUM_AGG() 函数尽管被描述为检测表的变化,但这里不适用. 使用 CheckSum() and CheckSum_Agg() 函数 CHECKSUM_AGG() 函数, 在Books OnLine 和许多相关的站点上是这样描述的, 通常用于检测一个表的数据是否更改. 这是一个代替触发器的更好的方法,只是该操作会引起表扫描的操作。于是我这次我仍然使用元数据来跟踪数据的变化,只是新建了列LastChkSum代替了LastUpdate,该列用于保存CHECKSUM_AGG(BINARY_CHECKSUM(*)),它将会在全表中产生一个唯一值,以区别数据的变化情况。 

本文引用网址:
在下列搜索引擎中搜索“SQL点滴24监测表的变化”的相关信息:
谷歌搜索 百度搜索 雅虎搜索 搜狗搜索 搜搜搜索 必应搜索 有道搜索
你可能还喜欢以下文章
  • 1林晨钰爆奶门照片ed2k 林晨钰爆...
  • 2雨后小故事完整版 雨后的小故事...
  • 3传谢娜张杰离婚 好友爆婚后情变...
  • 4杨棋涵7分钟****视频完整版 杨...
  • 5网传某校女老师与人偷欢春宫艳...
  • 1如何搭建第一个网站?做网站有...
  • 2Discuz!不能正常发送邮件-DISC...
  • 3电子商务网站建设的重要因素点...
  • 4织梦CMS读取频道信息失败 无法...
  • 5Dedecms会员注册验证邮箱的实现...
  • 1中国女大学生的淫靡生活
  • 2合肥艳照门事件 合肥艳照门全套...
  • 3林晨钰爆奶门视频qvod 林晨钰爆...
  • 4情侣酒店激情性爱 上演限制级影...
  • 5沈阳航空学院王婷不雅视频曝光...
  • 1Xen和虚拟化技术学习指南
  • 2瑞星播报--“灰鸽子变种HO”病...
  • 3如何做服务器安全维护?有哪些...
  • 4硬盘数据修复软件EasyRecovery...
  • 5Windows Server 2003 安全性指...
  • 赞助商广告

    图片文章导读

    相关文章阅览