在多用户操作数据库的时候,我想实现如下的功能:
记住每个用户在什么时间对表进行操作,用户姓名,Ip地址,对哪些表进行了那些操作:
如:“增加”、“删除”、“修改”
例如:有一个表table1字段有:pz,pm,jz
再建一个日志表tab_Log专门存放:用户操作时间(czsj),用户姓名(yhname),Ip,被操作的表名(tabname),操作类型(czlx)字段,其中操作类型是指对table1的操作是插入还是删除。
在table1在插入或删除时能将用户的信息存入tab_Log中
我用的是Delphi6+SQL Server2000
我如果用存储过程写对日志表的插入语句,并在程序中调用此存储过程,可能可以,但我程序中的Grid连的是一个adoQuery,那么取被操作的表名怎么取呢(表名指数据库中的表的名称,如上面的那个table1)?还有如何取用户的Ip地址?
想请问各位高手???
记住每个用户在什么时间对表进行操作,用户姓名,Ip地址,对哪些表进行了那些操作:
如:“增加”、“删除”、“修改”
例如:有一个表table1字段有:pz,pm,jz
再建一个日志表tab_Log专门存放:用户操作时间(czsj),用户姓名(yhname),Ip,被操作的表名(tabname),操作类型(czlx)字段,其中操作类型是指对table1的操作是插入还是删除。
在table1在插入或删除时能将用户的信息存入tab_Log中
我用的是Delphi6+SQL Server2000
我如果用存储过程写对日志表的插入语句,并在程序中调用此存储过程,可能可以,但我程序中的Grid连的是一个adoQuery,那么取被操作的表名怎么取呢(表名指数据库中的表的名称,如上面的那个table1)?还有如何取用户的Ip地址?
想请问各位高手???
解决方案 »
- 如何把yyyy-mm-dd hh:mm:ss转换成 yyyy-mm?
- 问一个ListView问题
- 是高手的,就可以进来看一下,绝对是个挑战!
- 一个关于自定义类的问题,请帮助!
- 怎样响应DBGrid的滚动条滚动事件 ?就是dbgrid的滚动条一滚动就要触发一个动作。
- 怎么把DBgrid组件的值改变!!!!!!
- 罗刚事件当晚录音http://www.91pop.com/upfile/31_1012.mp3
- 请chenquan(嘉威王子)领分!谢谢!
- 千两狂死狼,交个朋友怎么样?
- !!!!!!!!!!请告知那里能下到Mastering Delphi 6,多谢了!!!!!!!
- 求Delphi5的中文帮助手册:
- 制作安装包为什么不能支持中文?
每次操作時保存到這個文件里
不过有点耗资源!declare @hostname char(100)
set @hostname='server'
declare @cmdStr varchar(100)
select @cmdStr='ping -a -n 1 -l 1 '+@hostName
exec master..xp_cmdshell @cmdstr
得到访问机的IP**********************************************
* *************** *
* *CSDN浇水专用 * *
* * 拉登授权 * *
* *************** *
*等我有钱了,我就站在天安门广场挨个给大家发钱*
**********************************************
sp_trace_create
创建跟踪定义。新的跟踪将处于停止状态。
**************
*CSDN浇水专用*
* 拉登授权 *
**************
set @hostname='server'
declare @cmdStr varchar(100)
select @cmdStr='ping -a -n 1 -l 1 '+@hostName
exec master..xp_cmdshell @cmdstr
也可以试试sp_who
*CSDN浇水专用*
* 拉登授权 *
**************
呵呵
要是不行就上sql_server数据库去搜搜。忘了那玩意。O的到知道! :(
create table #table(spid int ,ecid int,status varchar(1000)....)
insert into #table(spid,ecid,status.....) exec sp_who
select count(*) from #table可以得到hostName
declare @cmdStr varchar(100)
drop table #table
create table #table(id int identity,txt varchar(1000))
select @cmdStr='ping '+@@hostName
insert into #table(txt) exec master..xp_cmdshell @cmdStrselect substring(txt,charindex('[',txt)+1,charindex(']',txt)-charindex('[',txt)-1) from #table where id=2
--得到IP地址,也可以不直接用hostName
declare @sendstr varchar(100)
select @sendstr='net send '+@HostName+'Messages!'
exec master..xp @sendstr