T-SQL甚至从存储过程中拒绝列更新

时间:2013-06-09 18:15:38

标签: sql tsql stored-procedures

我有一个关于ms sql权限的问题

我为列UPDATE

设置了DENY权限
DENY UPDATE ON [MyTable] (MyColumn) TO [PrincipalName] ;

它工作正常(当我直接更新MyTable的MyColumn时阻止更新MyColumn),但它仍允许用户通过存储过程更新此列。

这个问题有解决办法吗?

1 个答案:

答案 0 :(得分:0)

科林麦凯是对的。存储过程封装了业务逻辑和权限。

您可以使用类似

的内容
IF user_name()='PrincipalName' raiserror(N'Update denied',15,0)

检查存储过程中的用户。或者您可以为then table

创建更新触发器