社区
MS-SQL Server
帖子详情
怎样使用MSSQL 2000 的删除触发器建立删除日志。---过江项羽
luhongjun
2002-02-22 08:51:12
在MS SQLServer 2000下建立一个删除的触发器,它能够获得发出删除命令客户机的 IP地址、主机名称、用户名称及服务器的当前日期、时间等。
技术上如果可能的话,最好能够获得客户机的CPU型号,硬盘ID号 型号和大小,内存大小, 客户机当前时间等信息。
望各位朋友们帮忙,谢谢了。
最好有代码,再另外加分酬谢。
...全文
99
17
打赏
收藏
怎样使用MSSQL 2000 的删除触发器建立删除日志。---过江项羽
在MS SQLServer 2000下建立一个删除的触发器,它能够获得发出删除命令客户机的 IP地址、主机名称、用户名称及服务器的当前日期、时间等。 技术上如果可能的话,最好能够获得客户机的CPU型号,硬盘ID号 型号和大小,内存大小, 客户机当前时间等信息。 望各位朋友们帮忙,谢谢了。 最好有代码,再另外加分酬谢。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
supsuccess
2002-03-06
打赏
举报
回复
先收...
luhongjun
2002-02-27
打赏
举报
回复
还有我的应用程序用的是三层结构,使用Host_Name()得到的全是应用服务器的名字,我应该怎样得到发起客户端的机器名?
luhongjun
2002-02-27
打赏
举报
回复
在提一下,大家帮帮忙。
mmzxg
2002-02-27
打赏
举报
回复
是了,在EMTERPRISE中的LOGGER那里好象是有晒所有登录用户的资料的吧,包括用户网卡之类的东西,我想,是不是在这里入手呢。
小子菜鸟,不知所讲是否有用,请各位指教。。。。。
mmzxg
2002-02-27
打赏
举报
回复
学习学习,今天上班的时候正想着怎么处理这些问题呢?
学习,学习。。。。。。
luhongjun
2002-02-25
打赏
举报
回复
怎样取得客户机的IP地址呢?
>zhudexiang(阿祥)
>在现有的SQL功能中要实现这些功能很难,你可以自己做一个扩展存储过程,在触发器中调用该过程来实现!
用扩展存储过程怎样实现?能否給个提示或給个例子?
在客户端的应用程序中获得IP地址,硬盘ID等我已经实现,但我现在想在触发器中实现这些信息,应该怎样做?
昵称被占用了
2002-02-23
打赏
举报
回复
今天在局域网里测试(用NAME PIPE),都能测到,包括用查询分析器删除的App_Name()。
是不是SQL Explorer有特别的设置?或者和NAME PIPE有关?
书生
2002-02-22
打赏
举报
回复
哈哈~
亏你给我发那么多短信息。
我无能为力。帮你找找函数吧。
zhuzhichao
2002-02-22
打赏
举报
回复
我想你是想达到审计模式的效果.
可以在MSSQL中不能像Oracle那样对SCHEMA做一个触发器以舰听所有的表的DDL或者DML语句的动作.
因此,如果你想监听客户机上的删除动作,只有对每个表做触发器这种笨方法.
无法用一个触发器办到.
至于客户机的 IP地址、主机名称、用户名称及服务器的当前日期、时间,则都是可以实现的.
客户机的CPU型号,硬盘ID号 型号和大小,内存大小, 客户机当前时间等信息也是有办法获得的.
昵称被占用了
2002-02-22
打赏
举报
回复
一个触发器代码:
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
luhongjun
2002-02-22
打赏
举报
回复
如果客户端使用SQL Explorer进行删除,则
Host_Name(), --主机名称
App_Name(), --客户机使用的应用程序
sUser_Name() --用户名
产生空值(空格)
如果使用ADO进行删除,
Host_Name(), --主机名称
sUser_Name() --用户名
能够产生正确的结果
App_Name(), --客户机使用的应用程序
不能得到正确的结果
TR@SOE
2002-02-22
打赏
举报
回复
项羽兄,我只能表示关注。
昵称被占用了
2002-02-22
打赏
举报
回复
主机名称:HOST_NAME()
用户名称:SUSER_NAME()或SUSER_SNAME()
服务器的当前日期、时间:getdate()
昵称被占用了
2002-02-22
打赏
举报
回复
客户机的主机名称、用户名称及服务器的当前日期、时间的获得不难,分别有函数,其他信息可能在触发器里实现比较难,在客户端实现应该不难。
zhuzhichao
2002-02-22
打赏
举报
回复
luhongjun:
好的,等下周一來再說吧.
我雙休日不在.
luhongjun
2002-02-22
打赏
举报
回复
怎么看不到?
luhongjun
2002-02-22
打赏
举报
回复
首先谢谢,Haiwer(海阔天空--回复语句只对MSSQL有效) 兄的回复。
Host_Name(), --主机名称
App_Name(), --客户机使用的应用程序
sUser_Name() --用户名
中只有在服务器上使用时,才能真正得到合法的值,如果在其他客户机上使用,则为空。
还有客户机的IP地址应该使用哪个函数,在SQL7.0中的24个系统函数中并没有获得客户机IP的函数,2000下是否有,没有应该以什么方式获得。
zhuzhichao(炎龙骑士团—索尔—破龙击)
可否详细的说一说,麻烦不怕,能解决问题就可以。
我现在可以把删除的记录用触发器保存到日志中,但客户端主机名,IP地址等信息无法获得,只有在服务器上进行删除时才可以扑捉。
有关MS
SQL
触发器
资料
有关MS
SQL
TRIGER 是写基本的资料。只有掌握了基本,才能融会贯通。。。。
MS
SQL
2008R2
触发器
问题代码
MS
SQL
2008R2
触发器
问题代码
ms
sql
触发器
ms
sql
触发器
,http://jingyan.baidu.com/article/77b8dc7f2b82416175eab65b.html
SQL
server
触发器
,在触发Merge过程中,逐行触发的解决办法 用group by 避免是一次触发中的多行更新或
删除
。
SQL
server
触发器
,在触发Merge过程中,逐行触发的解决办法 用group by 避免是一次触发中的多行更新或
删除
。
ms
sql
数据库和oracle数据库通过
触发器
实现数据表同步
ms
sql
数据库和oracle数据库通过
触发器
实现数据表同步
MS-SQL Server
34,837
社区成员
254,632
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章