站长论坛 网站建设 设为首页·加入收藏 繁體中文
 
 站内搜索:
   投递文章
  您的位置: SQL Server>利用SQL Server 2005 COLUMNS_UPDATED函数进行数据审计
  利用SQL Server 2005 COLUMNS_UPDATED函数进行数据审计
2008-5-29 来源:互联网   作者: 编辑整理  阅读次数:282

在工作中,对数据改变情况进行审计是很重要的,尤其是正在处理的机密信息。除了跟踪被改变的数据之外,跟踪单个字段名称的改变也十分有用。

这些信息对审计部门尤其重要,而且当你调试数据库代码时,也十分有用。SQL Server 2005提供了两个函数来跟踪改变的字段:UPDATE 和COLUMNS_UPDATE。

UPDATE

这个TSQL触发函数接受一个字段名参数,返回一个布尔值来表明指定的字段是否包含在调用该触发函数的update语句中。当调用一个Insert语句时,该函数总是返回真。应用该函数的形式如下:

IF UPDATE(FieldName)
BEGIN
--work to do

END

如果你仅仅想知道当某些字段更新后的变化,那么这个函数足以完成任务。但是,如果你想记录哪些字段包含在你的update语句中,那又怎么样呢?仅用UPDATE函数编写能够确定哪些字段包含在update语句中的代码,这将很困难。COLUMNS_UPDATED函数就是为实现这一目的提供的。

COLUMNS_UPDATED

这个TSQL函数只能通过触发器获得,它返回包含在update语句中字段的二进制掩码。该update语句基于数据表中列的顺序。然而,编写处理二进制值并分析每位数据的代码是需要技巧的。不过,在SQL Server 2005中提供了一个系统函数将使你的工作变得更容易。首先,我们看一下COLUMNS_UPDATED函数的工作机制,然后,我们将讨论如何解析出字段名称。

列表A显示了如何创建一个数据表并为它添加一条记录。列表B创建审计表,用来保存数据改变情况。列表C在SalesHistory数据表上创建触发器,这个触发器真正实现的是sys.fn_IsBitSetInBitmask函数,它从INFORMATION_SCHEMA视图接受位掩码(就是从COLUMNS_UPDATED函数返回的二进制值)和列号,并为数据表中包含在位掩码中的每个字段返回一个非零值。然后,触发器中包含在update语句中的字段名映射为一个XML文档,从而可以将更新的字段保存在审计表中。

触发器设置之后,让我们运行一个update语句,该语句将更新我们的数据表中的一个值。然后,查看审计表,就可以来查看是否捕捉到了update语句中的字段。

UPDATE TOP(1) SalesHistory
SET SalePrice = SalePrice + 1
GO
SELECT * FROM SalesHistoryAudit

SQL Server 2000用户需要注意的地方

sys.fn_IsBitSetInBitmask是SQL Server 2005新增加的函数,因此在SQL Server 2000中不能获得。不过你可以复制SQL Server 2005中的脚本,然后在SQL Server 2000中创建你自己的函数。这样你就可以在SQL Server 2000的机器上使用定制审计解决方案了。

0
顶一下

返回
上一篇: 用SQL Server 2005同义字缩短开发时间    下一篇: 十大绝招保护SQL Server数据库安全
 相关文章列表
SQL Server视图管理中的四个限制条件 将Access升级为SQL Server 2005
从客户端提升SQL Server数据库性能 从外到内提高SQL Server数据库性能
配置SQL Server 2000安全的九大措施 在SQL Server 2005数据库下创建计划任务
SQL Server 数据库系统远程堆溢出漏洞 MSSQL2000中没有日志文件的数据库恢复方法
用户名: E_mail: 匿名:  请文明参与讨论,禁止漫骂攻击。
 网友评论                                                                               评论总数: 0条  [ 查看全部 ]

  新闻资讯
国内首个“恶意网站监测网”...
金山斥资10亿珠海建总部 ...
消息称雅虎总裁德克尔将成杨...
网上加沙战场:从YouTu...
新闻中心首页顶风推荐裸照 ...
中国网络论坛为何一夜之间集...
张朝阳:搜狐将在春节后推出...
Coreldraw里的默认...
网易推有道购物搜索 收录百...
Facebook用户将达1...
 
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 帮助
ASP站长   版权所有© 2008   苏ICP备08021577号  
本站上的资源均为原作者提供和网友推荐收集整理而来,仅供学习和研究使用。如有侵犯你的版权,请联系我们,本站将立即改正