我们可以拒绝从特定表中删除吗?

时间:2012-11-30 10:25:49

标签: sql-server-2008

对于sql server 2008中的特定用户,是否有办法拒绝对表集的删除权限。我希望用户无法从数据库中的某些表中删除数据,不希望使用而不是使用触发器特殊的表因为我有90个表??

1 个答案:

答案 0 :(得分:4)

绝对!

DENY DELETE ON (YourTableNameHere) TO YourUserNameHere

有关详细信息,请参阅the wonderful and extensive MSDN Books Online docs

如果您要拒绝数据库中所有表的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语句列表!