对于 sql server 2008 中的特定用户,有没有办法拒绝删除一组表的权限。我希望用户不能从数据库中的某些表中删除数据,不想使用而不是触发器来触发特定表原因我有90张桌子??
问问题
6008 次
1 回答
6
绝对地!
DENY DELETE ON (YourTableNameHere) TO YourUserNameHere
有关更多详细信息,请参阅精彩而广泛的 MSDN 联机丛书文档!
如果要拒绝对数据库中所有DELETE
表的权限,可以使用:
DENY DELETE TO YourUserNameHere
或者,如果您以将表分组在schematas中的方式构建数据库,那么您也可以拒绝来自特定模式的用户。
如果您没有将 90 个表分组到一个单独的模式(或两个、三个模式)中,那么就没有简单、神奇的方法可以一次将权限应用于 90 个表。每个语句可以是所有表、特定模式或特定数据库对象(如表) 。DENY
更新:您始终可以使用系统目录视图DENY
为您生成这些语句,然后使用您需要的那些:
SELECT
'DENY DELETE ON ' + t.NAME + ' TO (youruser)'
FROM sys.tables t
这将生成一个语句列表作为其输出(例如在 SQL Server Management Studio 中),以拒绝DELETE
您的用户的权限。将这些行复制到文本编辑器中并删除那些您不需要的行 - 这样您就有了长长的DENY
语句列表!
于 2012-11-30T10:27:33.470 回答