CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

怎样使用MSSQL 2000 的删除触发器建立删除日志。---过江项羽

楼主luhongjun(过江项羽)2002-02-22 08:51:12 在 MS-SQL Server / 基础类 提问

在MS   SQLServer   2000下建立一个删除的触发器,它能够获得发出删除命令客户机的   IP地址、主机名称、用户名称及服务器的当前日期、时间等。  
  技术上如果可能的话,最好能够获得客户机的CPU型号,硬盘ID号   型号和大小,内存大小,   客户机当前时间等信息。  
   
  望各位朋友们帮忙,谢谢了。  
   
  最好有代码,再另外加分酬谢。  
  问题点数:300、回复次数:19Top

1 楼Haiwer(海阔天空)回复于 2002-02-22 09:26:05 得分 0

客户机的主机名称、用户名称及服务器的当前日期、时间的获得不难,分别有函数,其他信息可能在触发器里实现比较难,在客户端实现应该不难。  
  Top

2 楼Haiwer(海阔天空)回复于 2002-02-22 09:35:00 得分 0

主机名称:HOST_NAME()  
  用户名称:SUSER_NAME()或SUSER_SNAME()  
  服务器的当前日期、时间:getdate()Top

3 楼TR@SOE()回复于 2002-02-22 09:39:30 得分 30

项羽兄,我只能表示关注。Top

4 楼Haiwer(海阔天空)回复于 2002-02-22 09:59:55 得分 150

一个触发器代码:  
   
  if   exists   (select   *   from   sysobjects   where   id   =   object_id('dbo.Trigg_Test_Del')   and   sysstat   &   0xf   =   8)  
  drop   trigger   dbo.Trigg_Test_Del  
  GO  
   
  create   trigger   Trigg_Test_Del   on   Test  
  For   Delete  
  AS  
   
   
  insert   TestLogs  
  select   Id,                               --被删除记录的Id  
      opTime=GetDate(),             --删除日期时间  
      HostName=Host_Name(),     --主机名称  
      AppName=App_Name(),         --客户机使用的应用程序  
      UserName=sUser_Name()     --用户名  
  from   DELETED  
   
  GO  
   
  Top

5 楼zhuzhichao(竹之草)回复于 2002-02-22 10:07:56 得分 30

我想你是想达到审计模式的效果.  
   
  可以在MSSQL中不能像Oracle那样对SCHEMA做一个触发器以舰听所有的表的DDL或者DML语句的动作.  
   
  因此,如果你想监听客户机上的删除动作,只有对每个表做触发器这种笨方法.  
  无法用一个触发器办到.  
   
  至于客户机的   IP地址、主机名称、用户名称及服务器的当前日期、时间,则都是可以实现的.  
   
  客户机的CPU型号,硬盘ID号   型号和大小,内存大小,   客户机当前时间等信息也是有办法获得的.  
  Top

6 楼lluunn007(书生)回复于 2002-02-22 10:09:49 得分 30

哈哈~  
  亏你给我发那么多短信息。  
  我无能为力。帮你找找函数吧。Top

7 楼luhongjun(过江项羽)回复于 2002-02-22 19:48:39 得分 0

首先谢谢,Haiwer(海阔天空--回复语句只对MSSQL有效)   兄的回复。  
  Host_Name(),   --主机名称  
  App_Name(),   --客户机使用的应用程序  
  sUser_Name()   --用户名  
  中只有在服务器上使用时,才能真正得到合法的值,如果在其他客户机上使用,则为空。  
  还有客户机的IP地址应该使用哪个函数,在SQL7.0中的24个系统函数中并没有获得客户机IP的函数,2000下是否有,没有应该以什么方式获得。  
   
  zhuzhichao(炎龙骑士团—索尔—破龙击)  
  可否详细的说一说,麻烦不怕,能解决问题就可以。  
   
  我现在可以把删除的记录用触发器保存到日志中,但客户端主机名,IP地址等信息无法获得,只有在服务器上进行删除时才可以扑捉。  
   
   
  Top

8 楼luhongjun(过江项羽)回复于 2002-02-22 19:57:05 得分 0

怎么看不到?Top

9 楼zhuzhichao(竹之草)回复于 2002-02-22 20:16:30 得分 0

luhongjun:  
   
  好的,等下周一來再說吧.  
  我雙休日不在.Top

10 楼luhongjun(过江项羽)回复于 2002-02-22 21:49:22 得分 0

如果客户端使用SQL   Explorer进行删除,则  
  Host_Name(),   --主机名称  
  App_Name(),   --客户机使用的应用程序  
  sUser_Name()   --用户名  
  产生空值(空格)  
  如果使用ADO进行删除,  
  Host_Name(),   --主机名称  
  sUser_Name()   --用户名  
  能够产生正确的结果  
  App_Name(),   --客户机使用的应用程序  
  不能得到正确的结果  
  Top

11 楼Haiwer(海阔天空)回复于 2002-02-23 20:46:33 得分 0

今天在局域网里测试(用NAME   PIPE),都能测到,包括用查询分析器删除的App_Name()。  
   
  是不是SQL   Explorer有特别的设置?或者和NAME   PIPE有关?  
  Top

12 楼luhongjun(过江项羽)回复于 2002-02-25 12:49:03 得分 0

怎样取得客户机的IP地址呢?  
   
  >zhudexiang(阿祥)      
  >在现有的SQL功能中要实现这些功能很难,你可以自己做一个扩展存储过程,在触发器中调用该过程来实现!    
  用扩展存储过程怎样实现?能否給个提示或給个例子?  
   
  在客户端的应用程序中获得IP地址,硬盘ID等我已经实现,但我现在想在触发器中实现这些信息,应该怎样做?  
  Top

13 楼luhongjun(过江项羽)回复于 2002-02-27 08:31:00 得分 0

在提一下,大家帮帮忙。  
  Top

14 楼luhongjun(过江项羽)回复于 2002-02-27 12:51:01 得分 0

还有我的应用程序用的是三层结构,使用Host_Name()得到的全是应用服务器的名字,我应该怎样得到发起客户端的机器名?  
   
  Top

15 楼mmzxg(超级笨蛋)回复于 2002-02-27 16:47:41 得分 30

学习学习,今天上班的时候正想着怎么处理这些问题呢?  
  学习,学习。。。。。。Top

16 楼mmzxg(超级笨蛋)回复于 2002-02-27 16:52:31 得分 0

是了,在EMTERPRISE中的LOGGER那里好象是有晒所有登录用户的资料的吧,包括用户网卡之类的东西,我想,是不是在这里入手呢。  
  小子菜鸟,不知所讲是否有用,请各位指教。。。。。Top

17 楼supsuccess(火气不小)回复于 2002-03-06 10:34:44 得分 0

先收...Top

相关问题

  • MSSQL中奇怪的触发器问题
  • 用触发器记录流水日志问题?
  • 求建立触发器日志的问题
  • 请教 谁可以将MSSQL的触发器改写为Oracle 的触发器 (分值多多)
  • MSSQL中的一个触发器的效率问题,请指教!
  • 触发器?!
  • 触发器
  • 触发器
  • 求触发器
  • 触发器

关键词

  • 客户机
  • 主机
  • 函数
  • 应用程序
  • 用户
  • 服务器
  • 型号
  • 客户
  • 硬盘
  • 学习

得分解答快速导航

  • 帖主:luhongjun
  • TR@SOE
  • Haiwer
  • zhuzhichao
  • lluunn007
  • mmzxg

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo