对于 sql server 2008 中的特定用户,有没有办法拒绝对表集的删除权限。我希望用户无法从数据库中的某些表中删除数据,不想使用触发器代替特定表的原因我有90张桌子??
绝对地!
DENY DELETE ON (YourTableNameHere) TO YourUserNameHere
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请参阅精彩而丰富的 MSDN 联机丛书文档!
如果要拒绝对数据库中所有表的DELETE权限,可以使用:
DENY DELETE TO YourUserNameHere
Run Code Online (Sandbox Code Playgroud)
或者,如果您以将表分组到schemata的方式构建数据库,那么您还可以拒绝特定架构的用户。
如果您还没有将 90 个表分组到一个单独的模式(或两个、三个模式)中,那么就没有简单、神奇的方法可以一次对 90 个表应用权限。每个语句要么是所有表,要么是特定模式,要么是特定数据库对象(如表)DENY。
更新:您始终可以使用系统目录视图DENY为您生成这些语句,然后使用您需要的语句:
SELECT
'DENY DELETE ON ' + t.NAME + ' TO (youruser)'
FROM sys.tables t
Run Code Online (Sandbox Code Playgroud)
这将产生作为其输出(例如在 SQL Server Management Studio 中)的声明列表,以拒绝DELETE您的用户的许可。将这些行复制到文本编辑器中并删除不需要的行 - 这样您就有了很长的DENY语句列表!
| 归档时间: |
|
| 查看次数: |
5714 次 |
| 最近记录: |