当前位置: 代码迷 >> Sql Server >> 請教:怎么在sql2000中,查看更改了軟件用戶名密碼
  详细解决方案

請教:怎么在sql2000中,查看更改了軟件用戶名密碼

热度:61   发布时间:2016-04-27 17:43:00.0
請教:如何在sql2000中,查看更改了軟件用戶名密碼?
公司有一款軟件,數據庫是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
  相关解决方案