发信人: flyingmist()
整理人: leitiger(2002-06-05 23:45:28), 站内信件
|
edison你可记得这个问题?就是你公布的完美解决方案(用Trigger来记录 对表的操作)。
有人这么用过吗?我想问一下: 1。如果很多表都有触发器的话对性能有没有影响? 2。能不能分析出来哪几个记录是由同一个事务提交的?
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.102.159.155]
发信人: edison (edison), 信区: Powerbuilder 标 题: Re: 关于记录操作日志的解决方案的问题 发信站: 网易 BBS (Sat Nov 13 23:46:44 1999), 站内信件
事先申明我还真没试过,只是理论上说明了可行性。呵呵,不好意思!
1. 如果很多表肯定会影响性能。但是是不是应用中的所有表都需要记录呢? 我觉得这个问题应该仔细权衡一下。
2. 估计这个是不太可能了。但是我们可以增加一个时间信息。可以知道 哪个用户什么时候如何改变了数据。至于是不是一个事物无所谓了。 而且用户根本不明白事物的概念,他不会在乎什么数据是在一个事物中 修改的或删除、增加的。你不会有什么特殊的需求吧?
-- 谢谢没有在 "将本文章寄一份给原作者" 处打勾, 再次感谢!
※ 来源:.网易 BBS bbs.netease.com.[FROM: bbs.szptt.net.cn]
发信人: flyingmist (飘雾), 信区: Powerbuilder 标 题: Re: 关于记录操作日志的解决方案的 发信站: 网易虚拟社区 (Sun Nov 14 00:08:48 1999), 站内信件
是啊,我有特殊要求,我要知道具体什么时间什么人做了什么事,以便追查 事故责任。你知道有些单位对责任由谁负是很重视的。
我们每个事务要改好几个表的,有的要改十几个。如果事后追查出来某项业 务不该做,就应该全都rollback,所以日志里要记得再清楚些才行。Sybase 说是有个审计功能,我们有人试了一下,它就是又建个数据库,有两个表, 记录一些操作,但是信息量似乎不够详细,不知道怎么审计。
如果在存储过程里顺便记录的话也有问题:无法记录非法操作者的活动,例 如直接打开数据库修改数据的。对了,这种情况下Trigger会记录吗?
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.102.159.155]
发信人: edison (edison), 信区: Powerbuilder 标 题: Re: 关于记录操作日志的解决方案的 发信站: 网易 BBS (Sun Nov 14 08:34:41 1999), 站内信件
【 在 flyingmist (飘雾) 的大作中提到: 】 : 是啊,我有特殊要求,我要知道具体什么时间什么人做了什么事,以便追查 : 事故责任。你知道有些单位对责任由谁负是很重视的。
增加一个时间信息不可以吗? 反正用户他也不懂事务的概念。 增加一个时间信息后不就知道什么人、什么时间做了什么事。 : : ...... : 如直接打开数据库修改数据的。对了,这种情况下Trigger会记录吗?
这个 Trigger 肯定不能纪录。我觉得这个问题应该属于你的数据库安全问题。 你不应该让用户有可能直接打开数据库(当然用户以 SA 登陆我们就没办法了)。
不好意思,瞎说了几句。希望对你有点帮助!
-- 谢谢没有在 "将本文章寄一份给原作者" 处打勾, 再次感谢!
※ 来源:.网易 BBS bbs.netease.com.[FROM: bbs.szptt.net.cn]
发信人: flyingmist (飘雾), 信区: Powerbuilder 标 题: Re: 关于记录操作日志的解决方案的 发信站: 网易虚拟社区 (Sun Nov 14 09:38:20 1999), 站内信件
用户不知道"事务"这个词,可不是没有事务的概念,好比你在银行转帐,银行 能允许你把提取操作rollback而把存入保留着吗? 记时间不行啊,同时有很多人在操作的。 事实上还不止时间问题,还有操作者的问题。我们不是每个操作员一个login 的。 谢谢你啦,只好不嫌麻烦手工处理啦。
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.102.159.155]
发信人: edison (edison), 信区: Powerbuilder 标 题: Re: 关于记录操作日志的解决方案的 发信站: 网易 BBS (Sun Nov 14 15:41:01 1999), 站内信件
如果你的每个用户对应一个 login ,那么记录什么 login 什么时候做了什么事。
这样能否满足?如果可以满足,我觉得你现在只需要将你的几个用户共享一个
login 改成一个用户对应一个 login 就行了。而且做这种更改是很简单的。首先
你的所有 CODE 与表结构不用变。也就是你以前关于用户权限控制的代码与自己建
的表都不用变。只是用户的增删改模块和用户登陆 SERVER 部分少做修改即可。
用户增删改部分在往自己的用户表中增删改数据的同时调用 sp_addlogin 为
Server 也增加一个 Login 。然后是数据库授权问题,数据库授权问题使用
sp_addalais 为你现有的数据库用户增加一个别名。你现在的软件是一个模块的
所有用户使用一个 login ,不同的 login 在数据库中具有不同的访问权限。
这样你的 sp_addalias 就为相应的 login 添加别名。这样后台权限设置也不用
改(这点应该很重要!)。然后是数据库的安全问题,现在每个用户对应一个
login、Password,聪明的用户就可以绕过你的前台直接访问数据库。不要紧,
我们在调用 sp_addlogin Username Password 时将用户输入的 Password 进行
一次加密变换。这样用户根本不知道真正的 login 密码,所以他不可能绕过你
的前台去访问数据库。即使加密变换很简单也无所谓,因为他不可能知道加密后
的密文。一个未知密文和密码变换过程的加密应该没人可以解的。如果再配合
上次我们讨论的安全连接问题(Client 与 Server 中传递的数据全部经过加密)
那你的软件就绝对安全,至少目前没法解开。
至于你的 rollback 问题(回滚提款数据同时要回滚存款数据),这就应该是你
的软件前台问题。前台肯定要做一个界面让管理员察看什么时候什么人做了什么。
至于回滚操作就应该在你的这个界面中完成了。
虽然我说的这些其中一些没有试过,但是一定可行!
Good luck!
-- 谢谢没有在 "将本文章寄一份给原作者" 处打勾, 再次感谢!
※ 来源:.网易 BBS bbs.netease.com.[FROM: 202.96.191.124]
|
|