1

对于 sql server 2008 中的特定用户,有没有办法拒绝删除一组表的权限。我希望用户不能从数据库中的某些表中删除数据,不想使用而不是触发器来触发特定表原因我有90张桌子??

4

1 回答 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 回答