对于sql server 2008中的特定用户,是否有办法拒绝对表集的删除权限。我希望用户无法从数据库中的某些表中删除数据,不希望使用而不是使用触发器特殊的表因为我有90个表??
答案 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
语句列表!