![防止用户更改扩展属性](https://linux22.com/image/678576/%E9%98%B2%E6%AD%A2%E7%94%A8%E6%88%B7%E6%9B%B4%E6%94%B9%E6%89%A9%E5%B1%95%E5%B1%9E%E6%80%A7.png)
问题:
默认情况下,用户可以更改自己的扩展属性。以下代码是否适合阻止用户更改其用户扩展属性?:
USE [CustomerAccessDatabase];
GO
DENY SELECT ON sys.extended_properties to [Customer_Access_Role];
GO
USE [master];
GO
DENY EXEC ON sys.sp_addextendedproperty to [public];
GO
DENY EXEC ON sys.sp_dropextendedproperty to [public];
GO
DENY EXEC ON sys.sp_updateextendedproperty to [public];
GO
答案1
我有信心我已经解决了这个问题并且充分确保了这一点。
拒绝选择 sys.extended_properties 不是一个选项,因为这会阻止选择所有表。
但是,拒绝执行系统存储过程本身就足够了。用户可以查看扩展属性,但无法更改它们。尝试通过 SSMS 的前端更改扩展属性也会失败,因为后端调用相同的系统存储过程。