拒绝更新所有用户和角色的列

Deny Update on Columns to ALL Users & Roles

在 SQL 服务器中,我有一个 table 插入一行后,其中的几列永远不需要更改(是的,这可能会在将来更改,但是不太可能或将是罕见事件)。我知道 SQL 服务器具有列级权限,因此我想拒绝为所有用户、角色、当前和当前用户更新这些列。 T-SQL 看起来像这样:

DENY UPDATE ON dbo.<Table>(<Column1>,<Columns2>,etc) TO ______

然而,似乎使用此命令,您必须始终在末尾指定用户或角色。有没有办法让它适用于当前和未来的所有用户?

是的,我很清楚,如果列在更新后发生更改,我可以使用触发器抛出错误,或者将 DENY 命令应用于所有现有用户和角色,并创建一个过程来创建新用户和将创建新 user/role 并自动应用更新等的角色

在我考虑任何这些选项之前,我会看看是否可以完成“拒绝更新所有用户”选项。

谢谢!

将所有 SQL 用户注册为默认角色,以便您可以对该角色执行拒绝。对于未来的,创建一个 DDL 触发器来触发 CREATE USER 并将其添加为该角色的成员。