背景信息:我在SSMS中管理一个数据库。我是唯一的管理员。我让用户创建表,然后他们希望将对这些表的选择权限授予其他用户。但不允许他们这样做,因为他们不是管理员或对架构拥有控制权限。
问:作为SSMS数据库管理员,我如何允许用户将他们创建的表的选择授予其他用户,而不让他们管理或授予他们控制权限?
发布于 2020-08-17 08:46:33
我只想让用户按照以下方式(SSMS语法可能不同,这只是为了说明情况)在他们自己的模式中创建一个表:
create table select_access (
table_name varchar[50],
user_name varchar[50],
is_active varchar
)然后定期运行管理作业(例如,每五到十分钟),并对每个适用的用户检查该表中的条目。
如果存在当前没有权限的表的条目(将is_active设置为Y),则授予该权限。如果存在当前具有该权限的表的条目(将is_active设置为N),则删除该权限。
这样,他们就可以完全控制表上的select权限,而不会牵扯到您。
要共享一个表,他们只需创建它,为每个想要与其共享表的用户添加条目到select_access,然后等待您的作业运行。
要禁用,他们只需将is_active字段设置为N,用于他们要撤销访问权限的用户,并再次等待您的作业运行。
使用is_active只是为了让您的生活更轻松,因为您唯一必要的信息来源就是那个表。
您可以让他们删除给定用户/表的行,从而使其变得更聪明,但随后您必须处理表和所有可能具有访问权限但在select_access中不再有条目的表。
只需确保他们授予权限的任何表都是他们模式中的表,而不是系统表中的一个:)
https://stackoverflow.com/questions/63447264
复制相似问题