如何防止整表被删除?

chenylin 2008-02-28 09:14:41
现在数据库中,整个表中数据有时会被全部删除,我想请教一下大家:如何屏蔽语句:“Delete from 表名”的命令?
...全文
155 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yesyesyes 2008-02-28
  • 打赏
  • 举报
回复
都能用sa登录了,没办法的
w2jc 2008-02-28
  • 打赏
  • 举报
回复
如果用户是恶意的,并且有足够的权限,那么真的很难防止。只有加强权限的管理。

但是,为了防止意外(比如DBA自己)删除一个表,还是有办法的:

1)SQL 2000下面,在要保护的表上面建一个视图,然后将视图绑定在表上,
那么就不能直接删除表,必须先删除被绑定的视图。
使用 CREATE VIEW .... WITH SCHEMABINDING ,具体语法你查一下联机文档

2)SQL 2005则可以建立针对DDL的触发器,修改(或删除)表会触发这个触发器。

CREATE TRIGGER NoDeleteTableDDL
ON DATABASE
FOR DROP_TABLE, ALTER_TABLE
AS
PRINT '不能修改或删除表'
PRINT CONVERT (nvarchar (1000), EVENTDATA())
ROLLBACK;

dawugui 2008-02-28
  • 打赏
  • 举报
回复
主要是可能有人搞破坏。

---

这个是非技术性问题,是管理问题或道德问题.
dawugui 2008-02-28
  • 打赏
  • 举报
回复
现在数据库中,整个表中数据有时会被全部删除,我想请教一下大家:如何屏蔽语句:“Delete from 表名”的命令?
-------------------
他只要有权限,就没办法.

防不胜防啊.
chenylin 2008-02-28
  • 打赏
  • 举报
回复
分配权限当然是可以的,但是SA帐号的就不好处理了。主要是可能有人搞破坏。
青锋-SS 2008-02-28
  • 打赏
  • 举报
回复
可以给用户分配相应的权限
chenylin 2008-02-28
  • 打赏
  • 举报
回复
已经明白怎么用了,感谢大家,结贴。
kelph 2008-02-28
  • 打赏
  • 举报
回复
管理员想破坏,谁能拦得住呢?
你不让delete,他可以drop,可以update,甚至可以格式化硬盘...

还是控制权限,使有破坏倾向的人不能访问
还有高频率的备份,到其他设备上,一旦被破坏也可恢复。
中国风 2008-02-28
  • 打赏
  • 举报
回复
:“Delete from 表名”的命令?

删表记录用DML触发器

create trigger Del_T on T
for delete
as
if exists(select 1 from deleted)
begin
raiserror 50005 N'不能删此表记录'
rollback
end
青锋-SS 2008-02-28
  • 打赏
  • 举报
回复
改了sa的密码吧

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧