如何向用户定义的服务器角色授予对象权限?

Mag*_*ier 6 security sql-server permissions role sql-server-2016

我想创建被授予访问权限的登录名

  • 所有用户数据库
  • 查看所有定义

  • 选择所有表的所有记录

对我来说,将登录名分配给每个数据库并将其添加到自定义 db 角色或每个 db 中的默认 db 角色(如 db_datareader)似乎开销太大。

相反,我尝试使用用户定义的服务器角色。

  • 但是如何将所需的权限分配给用户定义的服务器角色以允许查看所有数据库的任何定义和 db_datareader?

  • 这甚至可能吗?

sep*_*pic 3

要访问所有数据库,您应该授予权限CONNECT ANY DATABASE

要查看所有定义,您应该授予VIEW ANY DEFINITION权限。

要从所有用户表中选择所有数据,您可以SELECT ALL USER SECURABLES从 SQL Server 2014 开始授予权限,但它只允许您从所有可访问的数据库中选择数据,因此如果没有CONNECT ANY DATABASE它,您将一无所获。

因此,即使您拥有 SQL Server 2014 及更高版本,您也应该授予所有三个权限来完成您想要的操作:

  • CONNECT ANY DATABASE
  • VIEW ANY DEFINITION
  • SELECT ALL USER SECURABLES

无需授予,VIEW ANY DATABASE因为它已经授予public