公司有一款軟件,數據庫是sql 2000的.今天一個用戶說他的帳號和密碼登陸不了,我查詢了user數據表中的帳號和密碼,只是查詢了下,並未做任何更改,但帳號和密碼已和用戶使用的不相同了,我想問的是,我可以查看到什麼時候帳號和密碼做了變更嗎?應該如何才可以查看到更改的記錄,最好是說的明白點.不要像 "在日志裡查看就可以了 "這樣的答復,能說的具體點最好....
------解决方案--------------------
学习
------解决方案--------------------
安装Lumigent Log Explorer,然后查看事务日志。
------解决方案--------------------
用触发器追踪
--创建测试表
create table Test(UserName char(20) NULL,
pswd char(20) NULL)
--写入临时数据
insert into Test(UserName,pswd) select 'User1 ', '123 '
insert into Test(UserName,pswd) select 'User2 ', '456 '
--创建修改日志表
create table TestUpdLog(ColName char(20) NULL,
valbefore char(20) NULL,
valafter char(20))
--创建触发器
CREATE TRIGGER [TR_Test] ON [dbo].[Test]
FOR UPDATE
AS
declare @valbefore char(20)
declare @valafter char(20)
if update(UserName)
begin
select @valbefore=UserName from deleted
select @valafter=UserName from inserted
if isnull(@valbefore, ' ') <> isnull(@valafter, ' ')
insert into TestUpdLog(ColName,valbefore,valafter) select 'UserName ',@valbefore,@valafter
end
if update(pswd)
begin
select @valbefore=pswd from deleted
select @valafter=pswd from inserted
if isnull(@valbefore, ' ') <> isnull(@valafter, ' ')
insert into TestUpdLog(ColName,valbefore,valafter) select 'pswd ',@valbefore,@valafter
end
--测试
update Test Set pswd= 'abc ' where UserName= 'user1 '
update Test Set UserName= 'user999 ' where UserName= 'user2 '
select * from TestUpdLog
ColName valbefore valafter
-------------------- -------------------- --------------------
pswd 123 abc
UserName User2 user999
(所影响的行数为 2 行)
------解决方案--------------------
对了你要跟踪修改时间那TestUpdLog表还要增加一列updtime(datetime型),触发器应为
create TRIGGER [TR_Test] ON [dbo].[Test]
FOR UPDATE
AS
declare @valbefore char(20)
declare @valafter char(20)
if update(UserName)
begin
select @valbefore=UserName from deleted
select @valafter=UserName from inserted
if isnull(@valbefore, ' ') <> isnull(@valafter, ' ')
insert into TestUpdLog(ColName,valbefore,valafter,updtime) select 'UserName ',@valbefore,@valafter,getdate()
end
if update(pswd)
begin
select @valbefore=pswd from deleted
select @valafter=pswd from inserted
if isnull(@valbefore, ' ') <> isnull(@valafter, ' ')
insert into TestUpdLog(ColName,valbefore,valafter,updtime) select 'pswd ',@valbefore,@valafter,getdate()
end
------解决方案--------------------
用log exploer的监控功能
------解决方案--------------------
up