如何防止数据被删除 ( 积分: 50 )

  • 主题发起人 主题发起人 hnwhh
  • 开始时间 开始时间
H

hnwhh

Unregistered / Unconfirmed
GUEST, unregistred user!
现在碰到这样的问题,用户的数据库莫名其妙的被删除一条,怀疑有可能是程序中隐含着某个删除语句,也许是BUG,但始终无法找到。<br>我想在数据库中限制某个表中不允许删除数据,这样就能防止数据被删除。程序本身也不允许删除该表的数据。<br>不知道如何限制表被删除数据
 
如果你用的是sql&nbsp;数据库的话,你就在sa的权限中减去delete权限。
 
触发器监视阿
 
或者在事件查看器中人工查看是谁干的
 
触发器,我如何防止不删除呢?
 
设置数据库用户权限,将delete权限去掉
 
你可以用触发器监视,然后记录进行非法操作的情况,比如操作了哪张表,这个表的主键是什么,主键得值是多少,进行的是什么操作,将这些信息放到另一个表中,然后写个程序轮询这个表,发现有删除操作的时候,一方面可以将数据还原(trigger里面记录了DELETED,INSERTED等信息),一方面也可以查出是谁干的!!
 
程序在客户那才有这个问题,在公司是没办法测出来这种情况,而且是非常偶然,一个月出那么一两次。trigger好象无法阻止表被删除吧<br>真够头疼的
 
sa的权限似乎不可以被修改吧,如何修改呢?
 
顶,大家帮忙看看
 
zhaokaien说过了,用触发器。
 
就使用触发器也无法防止数据被删除啊
 
用事件探测器看
 
最好就是不用SA登录,另建一个登录用户,然后为这个用户设置相应的权限,使用其对某些表不具备删除的功能
 
看看有没有表间关系,说不定是主外键造成的?
 
你可以在触发器中使用事务回滚ROLLBACK&nbsp;TRAN这样就能限制删除,但是所有对此表的删除操作都将无效。
 
谢谢,这个办法真绝,解决了<br>谢谢啊
 
接受答案了.
 
后退
顶部