sys.fn_builtin_permissions(Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Microsoft Fabric 中的 SQL 数据库

返回服务器内置权限层次结构的说明。 sys.fn_builtin_permissions只能在 SQL Server 上调用并Azure SQL 数据库,无论它们是否在当前平台上受支持,它都会返回所有权限。 大多数权限适用于所有平台,但有些则不适用。 例如,不能对SQL 数据库授予服务器级别权限。 有关哪些平台支持每个权限的信息,请参阅“权限”(数据库引擎)。

Transact-SQL 语法约定

Syntax

sys.fn_builtin_permissions ( [ DEFAULT | NULL ]
    | empty_string | '<securable_class>' } )
  
<securable_class> ::=
      APPLICATION ROLE | ASSEMBLY | ASYMMETRIC KEY | AVAILABILITY GROUP
    | CERTIFICATE | CONTRACT | DATABASE | DATABASE SCOPED CREDENTIAL
    | ENDPOINT | FULLTEXT CATALOG | FULLTEXT STOPLIST | LOGIN
    | MESSAGE TYPE | OBJECT | REMOTE SERVICE BINDING | ROLE | ROUTE
    | SCHEMA | SEARCH PROPERTY LIST | SERVER | SERVER ROLE | SERVICE
    | SYMMETRIC KEY | TYPE | USER | XML SCHEMA COLLECTION

Arguments

[ DEFAULT |NULL ]

使用 DEFAULT 选项(不含引号)调用它时,该函数将返回内置权限的完整列表。

NULL 等效于 DEFAULT。

empty_string

等效于 DEFAULT。

“<securable_class>”

使用一个安全对象类的名称调用时, sys.fn_builtin_permissions 将返回应用于该类的所有权限。 '<securable_class>'nvarchar(60) 类型的字符串文本,需要引号。

返回的表

列名称 数据类型 Collation Description
class_desc nvarchar(60) 服务器的排序规则 安全对象类的说明。
permission_name nvarchar(60) 服务器的排序规则 权限名。
类型 varchar(4) 服务器的排序规则 压缩权限类型代码。 请参阅后面的表。
covering_permission_name nvarchar(60) 服务器的排序规则 如果不为 NULL,则为该类的权限名称(隐含该类的其他权限)。
parent_class_desc nvarchar(60) 服务器的排序规则 如果不为 NULL,则为包含当前类的父类的名称。
parent_covering_permission_name nvarchar(60) 服务器的排序规则 如果不为 NULL,则为父类的权限名称(隐含该类的所有其他权限)。

权限类型

权限类型 权限名称 应用于安全对象或类
AADS ALTER ANY DATABASE 事件会话

适用于:SQL Server 2014 (12.x) 及 更高版本
DATABASE
AAES 更改任何事件会话 SERVER
AAMK 更改任意掩码

适用于:SQL Server 2016(13.x)及更高版本。
DATABASE
ADBO 管理批量作 SERVER
AEDS 修改任何外部数据源

适用于:SQL Server 2016(13.x)及更高版本。
DATABASE
AEFF 更改任何外部文件格式

适用于:SQL Server 2016(13.x)及更高版本。
DATABASE
AL ALTER 应用程序角色
AL ALTER ASSEMBLY
AL ALTER

适用于:SQL Server 2012 (11.x) 及更高版本。
可用性组
AL ALTER 非对称密钥
AL ALTER CERTIFICATE
AL ALTER CONTRACT
AL ALTER DATABASE
AL ALTER

适用于:SQL Server 2017(14.x)及更高版本以及 Azure SQL 数据库。
数据库作用域凭据
AL ALTER ENDPOINT
AL ALTER FULLTEXT 目录
AL ALTER 全文停止词列表
AL ALTER LOGIN
AL ALTER 消息类型
AL ALTER OBJECT
AL ALTER 远程服务绑定
AL ALTER ROLE
AL ALTER ROUTE
AL ALTER SCHEMA
AL ALTER SEARCH 属性列表
AL ALTER

适用于:SQL Server 2012 (11.x) 及更高版本。
服务器角色
AL ALTER SERVICE
AL ALTER 对称密钥
AL ALTER USER
AL ALTER XML 架构集合
ALAA 更改任何服务器审计 SERVER
ALAG 修改任何可用性组

适用于:SQL Server 2012 (11.x) 及更高版本。
SERVER
ALAK 更改任何非对称密钥 DATABASE
ALAR 修改任意应用角色 DATABASE
ALAS 修改任何组装 DATABASE
ALCD 更改任何凭证 SERVER
ALCF 修改任何证书 DATABASE
ALCK 更改任何列加密密钥

适用于:SQL Server 2016(13.x)及更高版本。
DATABASE
ALCM 更改任意列主键

适用于:SQL Server 2016(13.x)及更高版本。
DATABASE
ALCO 更改任何连接 SERVER
ALDA 修改任何数据库审核 DATABASE
ALDB 更改任何数据库 SERVER
ALDC 更改任何数据库作用域配置

适用于:SQL Server 2016(13.x)及更高版本。
DATABASE
ALDS 更改任何数据空间 DATABASE
ALED ALTER ANY DATABASE 事件通知 DATABASE
ALES 修改任何事件通知 SERVER
ALFT 更改任何全文目录 DATABASE
ALHE 修改任何终结点 SERVER
ALLG 更改任何登录 SERVER
ALLS 更改任何链接服务器 SERVER
ALMT 更改任何消息类型 DATABASE
ALRL 修改任意角色 DATABASE
ALRS ALTER RESOURCES SERVER
ALRT 修改任何路由 DATABASE
ALSB 更改任意远程服务绑定 DATABASE
ALSC 更改任何合同 DATABASE
ALSK 更改任意对称密钥 DATABASE
ALSM 更改任何架构 DATABASE
ALSP 更改任何安全策略

适用于:SQL Server 2016(13.x)及更高版本。
DATABASE
ALSR 更改任意服务器角色

适用于:SQL Server 2012 (11.x) 及更高版本。
SERVER
ALSS 更改服务器状态 SERVER
ALST ALTER SETTINGS SERVER
ALSV 更改任何服务 DATABASE
ALTG ALTER ANY DATABASE DDL TRIGGER DATABASE
ALTR ALTER TRACE SERVER
ALUS 更改任何用户 DATABASE
AUTH AUTHENTICATE DATABASE
AUTH 身份验证服务器 SERVER
BADB 备份数据库 DATABASE
BALO BACKUP LOG DATABASE
CADB 连接任何数据库

适用于:SQL Server 2014 (12.x) 及更高版本。
SERVER
CL CONTROL 应用程序角色
CL CONTROL ASSEMBLY
CL CONTROL 非对称密钥
CL CONTROL

适用于:SQL Server 2012 (11.x) 及更高版本。
可用性组
CL CONTROL CERTIFICATE
CL CONTROL CONTRACT
CL CONTROL DATABASE
CL CONTROL

适用于:SQL Server 2017(14.x)及更高版本以及 Azure SQL 数据库。
数据库作用域凭据
CL CONTROL ENDPOINT
CL CONTROL FULLTEXT 目录
CL CONTROL 全文停止词列表
CL CONTROL LOGIN
CL CONTROL 消息类型
CL CONTROL OBJECT
CL CONTROL 远程服务绑定
CL CONTROL ROLE
CL CONTROL ROUTE
CL CONTROL SCHEMA
CL CONTROL SEARCH 属性列表
CL CONTROL SERVER SERVER
CL CONTROL

适用于:SQL Server 2012 (11.x) 及更高版本。
服务器角色
CL CONTROL SERVICE
CL CONTROL 对称密钥
CL CONTROL TYPE
CL CONTROL USER
CL CONTROL XML 架构集合
CO CONNECT DATABASE
CO CONNECT ENDPOINT
CORP 连接复制 DATABASE
COSQ 连接 SQL SERVER
CP CHECKPOINT DATABASE
CRAC 创建可用性组

适用于:SQL Server 2012 (11.x) 及更高版本。
SERVER
CRAG CREATE AGGREGATE DATABASE
CRAK 创建非对称密钥 DATABASE
CRAS CREATE ASSEMBLY DATABASE
CRCF CREATE CERTIFICATE DATABASE
CRDB 创建任意数据库 SERVER
CRDB 创建数据库 DATABASE
CRDE 创建 DDL 事件通知 SERVER
CRDF CREATE DEFAULT DATABASE
CRED CREATE DATABASE DDL 事件通知 DATABASE
CRFN 创建函数 DATABASE
CRFT 创建全文目录 DATABASE
CRHE CREATE ENDPOINT SERVER
CRMT 创建消息类型 DATABASE
CRPR CREATE PROCEDURE DATABASE
CRQU CREATE QUEUE DATABASE
CRRL 创建角色 DATABASE
CRRT CREATE ROUTE DATABASE
CRRU CREATE RULE DATABASE
CRSB 创建远程服务绑定 DATABASE
CRSC CREATE CONTRACT DATABASE
CRSK 创建对称密钥 DATABASE
CRSM 创建架构 DATABASE
CRSN CREATE SYNONYM DATABASE
CRSO 创建序列 SCHEMA
CRSR 创建服务器角色

适用于:SQL Server 2012 (11.x) 及更高版本。
SERVER
CRSV CREATE SERVICE DATABASE
CRTB CREATE TABLE DATABASE
CRTE 创建跟踪事件通知 SERVER
CRTY 创建类型 DATABASE
CRVW 创建视图 DATABASE
CRXS 创建 XML 架构集合 DATABASE
DABO 管理数据库批量操作

适用于:SQL 数据库。
DATABASE
DL DELETE DATABASE
DL DELETE OBJECT
DL DELETE SCHEMA
EAES 执行任何外部脚本

适用于:SQL Server 2016(13.x)及更高版本。
DATABASE
EX EXECUTE DATABASE
EX EXECUTE OBJECT
EX EXECUTE SCHEMA
EX EXECUTE TYPE
EX EXECUTE XML 架构集合
IAL 模拟任何登录名

适用于:SQL Server 2014 (12.x) 及更高版本。
SERVER
IM IMPERSONATE LOGIN
IM IMPERSONATE USER
IN INSERT DATABASE
IN INSERT OBJECT
IN INSERT SCHEMA
KIDC 终止数据库连接

适用于:Azure SQL 数据库。
DATABASE
RC RECEIVE OBJECT
RF REFERENCES ASSEMBLY
RF REFERENCES 非对称密钥
RF REFERENCES CERTIFICATE
RF REFERENCES CONTRACT
RF REFERENCES DATABASE
RF REFERENCES

适用于:SQL Server 2017(14.x)及更高版本以及 Azure SQL 数据库。
数据库作用域凭据
RF REFERENCES FULLTEXT 目录
RF REFERENCES 全文停止词列表
RF REFERENCES SEARCH 属性列表
RF REFERENCES 消息类型
RF REFERENCES OBJECT
RF REFERENCES SCHEMA
RF REFERENCES 对称密钥
RF REFERENCES TYPE
RF REFERENCES XML 架构集合
SHDN SHUTDOWN SERVER
SL SELECT DATABASE
SL SELECT OBJECT
SL SELECT SCHEMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN 订阅查询通知 DATABASE
SUS 选择所有用户安全对象

适用于:SQL Server 2014 (12.x) 及更高版本。
SERVER
TO 接管所有权 ASSEMBLY
TO 接管所有权 非对称密钥
TO 接管所有权

适用于:SQL Server 2012 (11.x) 及更高版本。
可用性组
TO 接管所有权 CERTIFICATE
TO 接管所有权 CONTRACT
TO 接管所有权 DATABASE
TO 接管所有权

适用于:SQL Server 2017(14.x)及更高版本以及 Azure SQL 数据库。
数据库作用域凭据
TO 接管所有权 ENDPOINT
TO 接管所有权 FULLTEXT 目录
TO 接管所有权 全文停止词列表
TO 接管所有权 SEARCH 属性列表
TO 接管所有权 消息类型
TO 接管所有权 OBJECT
TO 接管所有权 远程服务绑定
TO 接管所有权 ROLE
TO 接管所有权 ROUTE
TO 接管所有权 SCHEMA
TO 接管所有权

适用于:SQL Server 2012 (11.x) 及更高版本。
服务器角色
TO 接管所有权 SERVICE
TO 接管所有权 对称密钥
TO 接管所有权 TYPE
TO 接管所有权 XML 架构集合
UMSK UNMASK

适用于:SQL Server 2016(13.x)及更高版本。
DATABASE
UP UPDATE DATABASE
UP UPDATE OBJECT
UP UPDATE SCHEMA
VW 视图定义 应用程序角色
VW 视图定义 ASSEMBLY
VW 视图定义 非对称密钥
VW 视图定义

适用于:SQL Server 2012 (11.x) 及更高版本。
可用性组
VW 视图定义 CERTIFICATE
VW 视图定义 CONTRACT
VW 视图定义 DATABASE
VW 视图定义

适用于:SQL Server 2017(14.x)及更高版本以及 Azure SQL 数据库。
数据库作用域凭据
VW 视图定义 ENDPOINT
VW 视图定义 FULLTEXT 目录
VW 视图定义 全文停止词列表
VW 视图定义 LOGIN
VW 视图定义 消息类型
VW 视图定义 OBJECT
VW 视图定义 远程服务绑定
VW 视图定义 ROLE
VW 视图定义 ROUTE
VW 视图定义 SCHEMA
VW 视图定义 SEARCH 属性列表
VW 视图定义

适用于:SQL Server 2012 (11.x) 及更高版本。
服务器角色
VW 视图定义 SERVICE
VW 视图定义 对称密钥
VW 视图定义 TYPE
VW 视图定义 USER
VW 视图定义 XML 架构集合
VWAD 查看任何定义 SERVER
VWCK 查看任何列加密密钥定义

适用于:SQL Server 2016(13.x)及更高版本。
DATABASE
VWCM 查看任何列主密钥定义

适用于:SQL Server 2016(13.x)及更高版本。
DATABASE
VWCT 查看更改跟踪 OBJECT
VWCT 查看更改跟踪 SCHEMA
VWDB 查看任意数据库 SERVER
VWDS 查看数据库状态 DATABASE
VWSS 查看服务器状态 SERVER
XA 外部访问程序集 SERVER
XU 不安全的程序集 SERVER

Remarks

sys.fn_builtin_permissions 是一个表值函数,它可以产生预定义权限层次结构的副本。 此层次结构包含涵盖权限。 DEFAULT结果集描述权限层次结构的有向无环图,根为 (class = SERVER, permission = CONTROL SERVER) 。

sys.fn_builtin_permissions 不接受相关参数。

使用无效类名调用 sys.fn_builtin_permissions 时,它返回一个空集。

下图显示了权限以及它们彼此之间的关系。 多次列出了某些更高级别的权限(如 CONTROL SERVER)。 在本文中,海报太小了,因此无法查看。 你可以下载 PDF 格式的完整数据库引擎权限文章

数据库引擎权限 PDF 中的屏幕截图。

Permissions

要求具有 public 角色的成员身份。

Examples

A. 列出所有内置权限

使用 DEFAULT 或空字符串返回所有权限。

SELECT * FROM sys.fn_builtin_permissions(DEFAULT);
SELECT * FROM sys.fn_builtin_permissions('');

B. 列出可在对称密钥上设置的权限

指定一个类以返回该类的所有可能权限。

SELECT * FROM sys.fn_builtin_permissions(N'SYMMETRIC KEY');

C. 列出具有 SELECT 权限的类

SELECT * FROM sys.fn_builtin_permissions(DEFAULT)
    WHERE permission_name = 'SELECT';

另请参阅