Ari*_*ian 0 sql sql-server triggers sql-server-2005 sql-server-2008
嗨专家如何阻止数据库用户使用触发器删除表中的任何数据?我想只需要管理员从表中删除数据
谢谢
嗯带走了用户的许可?如果你不希望他们做某事,那就"禁止"他们......这就是我们拥有权限的原因.
以下是有关如何撤消权限的详细信息:
http://msdn.microsoft.com/en-us/library/ms186308.aspx
你想使用触发器的任何特殊原因?
您只需从要限制的用户中删除DELETE权限即可.请查看此处的"权限"部分:http://msdn.microsoft.com/en-us/library/ms189835.aspx
编辑:既然你说你确实想要使用触发器(但我真的认为你应该重新考虑),你可以创建一个表,如:
CREATE TABLE Restricted_Users
(
user_name VARCHAR(40) PRIMARY_KEY -- Use a size appropriate to your requirements
)
Run Code Online (Sandbox Code Playgroud)
创建INSTEAD OF DELETE
于触发所有的表(那将是件苦差事),它会检查USER_NAME()
在Restricted_Users
表中,如果他们EXIST
可以打电话RAISERROR
到导致事务回滚,并显示一条消息给用户.
请记住,您必须在添加到数据库的所有新表上维护这些触发器,并在Restricted_Users
每次从数据库添加/删除用户时维护表中的用户列表.
这将是很多简单的使用可允许系统在SQL Server(这就是它的设计),所用的表格设置相应的权限角色.然后,在添加新用户时,您只需将它们分配给相应的角色,并为您处理删除权限.
归档时间: |
|
查看次数: |
2358 次 |
最近记录: |