2006-12-06

用触发器生成数据库表的数据操作日志

来源: 本站收集整理 作者:佚名 评论 0 条
 

作为一名数据库治理员,你尽力以各部门熟知的不同格式,向各部门提供它们所需要的数据。你通常将MS Excel格式的数据递交到会计部门,或将数据以HTML报表的形式呈现给普通用户。你们的系统安全治理员们则习惯于用文本阅读器或者事件查看器来查看日志。本文将介绍如何使用触发器,把DML(数据操作语言)对数据库中的特定数据表的改动记录下来。注:下列例子为Insert型触发器,不过改成Delete/Update型的触发器也很轻易。

操作步骤首先让我们在Northwind数据库内创建一个简单表。

create table tablefortrigger

( 

 track int identity(1,1) primary key, 

 Lastname varchar(25), 

 Firstname varchar(25) 

)

创建好这个数据表后,添加一个标准message到master数据库的sysmessages数据表中。注重,我所添加的是一个参变量,用以接受一个字符值,它将被输出显示给治理员们。通过设置@_with_log参数为true,我们包管相关结果被发送到事件日志。

sp_addmessage 50005, 10, '%s', @with_log = true

现在我们创建这条用有意义的信息填充的消息。下面的信息将填充这条消息,并且记录到文件中:

·操作的类型(插入)。

·受到影响的数据表。

·改动的日期与时间。

被该语句插入的全部字段。 下面的这个触发器用预定义值(1~3个字符)创建一个字符串,该预定义值位于inserted数据表中。(这个inserted数据表驻留在内存中,它容纳被插入到触发器所在数据表的记录行)。触发器连接这些值并放到一个@msg变量。然后这个变量被传送到raiserror函数,该函数将它写到事件日志中。

Create trigger TestTrigger on 

tablefortrigger 

for insert 

as

--声明储存消息的变量 

Declare @Msg varchar(8000) 

--将"操作/表名/日期时间/插入字段"赋与消息

set @Msg = 'Inserted | tablefortrigger | '   convert(varchar(20), getdate())   ' | ' 

 (select convert(varchar(5), track) 

  ', '   lastname   ', '   firstname 

from inserted) 

--产生错误发送给事件查看器。

raiserror( 50005, 10, 1, @Msg)

运行以下语句对触发器进行测试,然后查看事件日志:

Insert into tablefortrigger(lastname, firstname) 

Values('Doe', 'John')

假如你打开事件日志,你应该看到以下消息:
共3页: 上一页 1 [2] [3] 下一页

(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:史上最NB程序员的自白(笑)  
下一篇:戒浮戒躁!一个“假程序员”的心里话
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号