权限(数据库引擎)

每个 SQL Server 安全对象都有可以授予主体的关联权限。 本主题提供了下列信息:

  • 权限命名约定

  • 与特定的安全对象相关的权限

  • SQL Server 权限

  • 权限检查算法

  • 示例

权限命名约定

下面介绍命名权限时遵循的一般约定:

  • CONTROL

    为被授权者授予类似所有权的功能。 被授权者实际上对安全对象具有所定义的所有权限。 也可以为已被授予 CONTROL 权限的主体授予对安全对象的权限。 因为 SQL Server 安全模型是分层的,所以 CONTROL 权限在特定范围内隐含着对该范围内的所有安全对象的 CONTROL 权限。 例如,对数据库的 CONTROL 权限隐含着对数据库的所有权限、对数据库中所有组件的所有权限、对数据库中所有架构的所有权限以及对数据库的所有架构中的所有对象的权限。

  • ALTER

    授予更改特定安全对象的属性(所有权除外)的权限。 当授予对某个范围的 ALTER 权限时,也授予更改、创建或删除该范围内包含的任何安全对象的权限。 例如,对架构的 ALTER 权限包括在该架构中创建、更改和删除对象的权限。

  • ALTER ANY <Server Securable>,其中 Server Securable 可以是任何服务器安全对象。

    授予创建、更改或删除 Server Securable 的各个实例的权限。 例如,ALTER ANY LOGIN 将授予创建、更改或删除实例中的任何登录名的权限。

  • ALTER ANY <Database Securable>,其中 Database Securable 可以是数据库级别的任意安全对象。

    授予创建、更改或删除 Database Securable 的各个实例的权限。 例如,ALTER ANY SCHEMA 将授予创建、更改或删除数据库中的任何架构的权限。

  • TAKE OWNERSHIP

    允许被授权者获取所授予的安全对象的所有权。

  • IMPERSONATE <Login>

    允许被授权者模拟该登录名。

  • IMPERSONATE <User>

    允许被授权者模拟该用户。

  • CREATE <Server Securable>

    授予被授权者创建 Server Securable 的权限。

  • CREATE <Database Securable>

    授予被授权者创建 Database Securable 的权限。

  • CREATE <Schema-contained Securable>

    授予创建包含在架构中的安全对象的权限。 但是,若要在特定架构中创建安全对象,必须对该架构具有 ALTER 权限。

  • VIEW DEFINITION

    允许被授权者访问元数据。

  • REFERENCES

    表的 REFERENCES 权限是创建引用该表的外键约束时所必需的。

    对象的 REFERENCES 权限是使用引用该对象的 WITH SCHEMABINDING 子句创建 FUNCTION 或 VIEW 时所必需的。

SQL Server 权限图表

有关 pdf 格式的所有数据库引擎权限的海报大小的图表,请参阅 https://go.microsoft.com/fwlink/?LinkId=229142

适用于特定安全对象的权限

下表列出了主要的权限类别以及可应用这些权限的安全对象的种类。

权限

适用于

SELECT

同义词

表和列

表值函数 [Transact-SQL 和公共语言运行时 (CLR)] 和列

视图和列

VIEW CHANGE TRACKING

架构

UPDATE

同义词

表和列

视图和列

序列对象

REFERENCES

标量函数和聚合函数(Transact-SQL 和 CLR)

Service Broker 队列

表和列

表值函数(Transact-SQL 和 CLR)和列

类型

视图和列

序列对象

INSERT

同义词

表和列

视图和列

DELETE

同义词

表和列

视图和列

EXECUTE

过程(Transact-SQL 和 CLR)

标量函数和聚合函数(Transact-SQL 和 CLR)

同义词

CLR 类型

RECEIVE

Service Broker 队列

VIEW DEFINITION

登录名、用户和角色

过程(Transact-SQL 和 CLR)

Service Broker 队列

标量函数和聚合函数(Transact-SQL 和 CLR)

同义词

表值函数(Transact-SQL 和 CLR)

视图

序列对象

ALTER

登录名、用户和角色

过程(Transact-SQL 和 CLR)

标量函数和聚合函数(Transact-SQL 和 CLR)

Service Broker 队列

表值函数(Transact-SQL 和 CLR)

视图

序列对象

TAKE OWNERSHIP

角色

过程(Transact-SQL 和 CLR)

标量函数和聚合函数(Transact-SQL 和 CLR)

同义词

表值函数(Transact-SQL 和 CLR)

视图

序列对象

CONTROL

登录名、用户和角色

过程(Transact-SQL 和 CLR)

标量函数和聚合函数(Transact-SQL 和 CLR)

Service Broker 队列

同义词

表值函数(Transact-SQL 和 CLR)

视图

序列对象

IMPERSONATE

登录名和用户

SQL Server 权限

下表提供了 SQL Server 权限的完整列表。

基础安全对象

对基础安全对象的粒度权限

权限类型代码

包含基础安全对象的安全对象

对容器安全对象的权限隐含着对基础安全对象的粒度权限

APPLICATION ROLE

ALTER

AL

DATABASE

ALTER ANY APPLICATION ROLE

APPLICATION ROLE

CONTROL

CL

DATABASE

CONTROL

APPLICATION ROLE

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

ASSEMBLY

ALTER

AL

DATABASE

ALTER ANY ASSEMBLY

ASSEMBLY

CONTROL

CL

DATABASE

CONTROL

ASSEMBLY

REFERENCES

RF

DATABASE

REFERENCES

ASSEMBLY

TAKE OWNERSHIP

TO

DATABASE

CONTROL

ASSEMBLY

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

ASYMMETRIC KEY

ALTER

AL

DATABASE

ALTER ANY ASYMMETRIC KEY

ASYMMETRIC KEY

CONTROL

CL

DATABASE

CONTROL

ASYMMETRIC KEY

REFERENCES

RF

DATABASE

REFERENCES

ASYMMETRIC KEY

TAKE OWNERSHIP

TO

DATABASE

CONTROL

ASYMMETRIC KEY

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

AVAILABILITY GROUP

ALTER

AL

SERVER

ALTER ANY AVAILABILITY GROUP

AVAILABILITY GROUP

CONTROL

CL

SERVER

CONTROL SERVER

AVAILABILITY GROUP

TAKE OWNERSHIP

TO

SERVER

CONTROL SERVER

AVAILABILITY GROUP

VIEW DEFINITION

VW

SERVER

VIEW ANY DEFINITION

CERTIFICATE

ALTER

AL

DATABASE

ALTER ANY CERTIFICATE

CERTIFICATE

CONTROL

CL

DATABASE

CONTROL

CERTIFICATE

REFERENCES

RF

DATABASE

REFERENCES

CERTIFICATE

TAKE OWNERSHIP

TO

DATABASE

CONTROL

CERTIFICATE

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

CONTRACT

ALTER

AL

DATABASE

ALTER ANY CONTRACT

CONTRACT

CONTROL

CL

DATABASE

CONTROL

CONTRACT

REFERENCES

RF

DATABASE

REFERENCES

CONTRACT

TAKE OWNERSHIP

TO

DATABASE

CONTROL

CONTRACT

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

DATABASE

ALTER

AL

SERVER

ALTER ANY DATABASE

DATABASE

ALTER ANY APPLICATION ROLE

ALAR

SERVER

CONTROL SERVER

DATABASE

ALTER ANY ASSEMBLY

ALAS

SERVER

CONTROL SERVER

DATABASE

ALTER ANY ASYMMETRIC KEY

ALAK

SERVER

CONTROL SERVER

DATABASE

ALTER ANY CERTIFICATE

ALCF

SERVER

CONTROL SERVER

DATABASE

ALTER ANY CONTRACT

ALSC

SERVER

CONTROL SERVER

DATABASE

ALTER ANY DATABASE AUDIT

ALDA

SERVER

ALTER ANY SERVER AUDIT

DATABASE

ALTER ANY DATABASE DDL TRIGGER

ALTG

SERVER

CONTROL SERVER

DATABASE

ALTER ANY DATABASE EVENT NOTIFICATION

ALED

SERVER

ALTER ANY EVENT NOTIFICATION

DATABASE

ALTER ANY DATASPACE

ALDS

SERVER

CONTROL SERVER

DATABASE

ALTER ANY FULLTEXT CATALOG

ALFT

SERVER

CONTROL SERVER

DATABASE

ALTER ANY MESSAGE TYPE

ALMT

SERVER

CONTROL SERVER

DATABASE

ALTER ANY REMOTE SERVICE BINDING

ALSB

SERVER

CONTROL SERVER

DATABASE

ALTER ANY ROLE

ALRL

SERVER

CONTROL SERVER

DATABASE

ALTER ANY ROUTE

ALRT

SERVER

CONTROL SERVER

DATABASE

ALTER ANY SCHEMA

ALSM

SERVER

CONTROL SERVER

DATABASE

ALTER ANY SERVICE

ALSV

SERVER

CONTROL SERVER

DATABASE

ALTER ANY SYMMETRIC KEY

ALSK

SERVER

CONTROL SERVER

DATABASE

ALTER ANY USER

ALUS

SERVER

CONTROL SERVER

DATABASE

AUTHENTICATE

AUTH

SERVER

AUTHENTICATE SERVER

DATABASE

BACKUP DATABASE

BADB

SERVER

CONTROL SERVER

DATABASE

BACKUP LOG

BALO

SERVER

CONTROL SERVER

DATABASE

CHECKPOINT

CP

SERVER

CONTROL SERVER

DATABASE

CONNECT

CO

SERVER

CONTROL SERVER

DATABASE

CONNECT REPLICATION

CORP

SERVER

CONTROL SERVER

DATABASE

CONTROL

CL

SERVER

CONTROL SERVER

DATABASE

CREATE AGGREGATE

CRAG

SERVER

CONTROL SERVER

DATABASE

CREATE ASSEMBLY

CRAS

SERVER

CONTROL SERVER

DATABASE

CREATE ASYMMETRIC KEY

CRAK

SERVER

CONTROL SERVER

DATABASE

CREATE CERTIFICATE

CRCF

SERVER

CONTROL SERVER

DATABASE

CREATE CONTRACT

CRSC

SERVER

CONTROL SERVER

DATABASE

CREATE DATABASE

CRDB

SERVER

CREATE ANY DATABASE

DATABASE

CREATE DATABASE DDL EVENT NOTIFICATION

CRED

SERVER

CREATE DDL EVENT NOTIFICATION

DATABASE

CREATE DEFAULT

CRDF

SERVER

CONTROL SERVER

DATABASE

CREATE FULLTEXT CATALOG

CRFT

SERVER

CONTROL SERVER

DATABASE

CREATE FUNCTION

CRFN

SERVER

CONTROL SERVER

DATABASE

CREATE MESSAGE TYPE

CRMT

SERVER

CONTROL SERVER

DATABASE

CREATE PROCEDURE

CRPR

SERVER

CONTROL SERVER

DATABASE

CREATE QUEUE

CRQU

SERVER

CONTROL SERVER

DATABASE

CREATE REMOTE SERVICE BINDING

CRSB

SERVER

CONTROL SERVER

DATABASE

CREATE ROLE

CRRL

SERVER

CONTROL SERVER

DATABASE

CREATE ROUTE

CRRT

SERVER

CONTROL SERVER

DATABASE

CREATE RULE

CRRU

SERVER

CONTROL SERVER

DATABASE

CREATE SCHEMA

CRSM

SERVER

CONTROL SERVER

DATABASE

CREATE SERVICE

CRSV

SERVER

CONTROL SERVER

DATABASE

CREATE SYMMETRIC KEY

CRSK

SERVER

CONTROL SERVER

DATABASE

CREATE SYNONYM

CRSN

SERVER

CONTROL SERVER

DATABASE

CREATE TABLE

CRTB

SERVER

CONTROL SERVER

DATABASE

CREATE TYPE

CRTY

SERVER

CONTROL SERVER

DATABASE

CREATE VIEW

CRVW

SERVER

CONTROL SERVER

DATABASE

CREATE XML SCHEMA COLLECTION

CRXS

SERVER

CONTROL SERVER

DATABASE

DELETE

DL

SERVER

CONTROL SERVER

DATABASE

EXECUTE

EX

SERVER

CONTROL SERVER

DATABASE

INSERT

IN

SERVER

CONTROL SERVER

DATABASE

REFERENCES

RF

SERVER

CONTROL SERVER

DATABASE

SELECT

SL

SERVER

CONTROL SERVER

DATABASE

SHOWPLAN

SPLN

SERVER

ALTER TRACE

DATABASE

SUBSCRIBE QUERY NOTIFICATIONS

SUQN

SERVER

CONTROL SERVER

DATABASE

TAKE OWNERSHIP

TO

SERVER

CONTROL SERVER

DATABASE

UPDATE

UP

SERVER

CONTROL SERVER

DATABASE

VIEW DATABASE STATE

VWDS

SERVER

VIEW SERVER STATE

DATABASE

VIEW DEFINITION

VW

SERVER

VIEW ANY DEFINITION

ENDPOINT

ALTER

AL

SERVER

ALTER ANY ENDPOINT

ENDPOINT

CONNECT

CO

SERVER

CONTROL SERVER

ENDPOINT

CONTROL

CL

SERVER

CONTROL SERVER

ENDPOINT

TAKE OWNERSHIP

TO

SERVER

CONTROL SERVER

ENDPOINT

VIEW DEFINITION

VW

SERVER

VIEW ANY DEFINITION

FULLTEXT CATALOG

ALTER

AL

DATABASE

ALTER ANY FULLTEXT CATALOG

FULLTEXT CATALOG

CONTROL

CL

DATABASE

CONTROL

FULLTEXT CATALOG

REFERENCES

RF

DATABASE

REFERENCES

FULLTEXT CATALOG

TAKE OWNERSHIP

TO

DATABASE

CONTROL

FULLTEXT CATALOG

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

FULLTEXT STOPLIST

ALTER

AL

DATABASE

ALTER ANY FULLTEXT CATALOG

FULLTEXT STOPLIST

CONTROL

CL

DATABASE

CONTROL

FULLTEXT STOPLIST

REFERENCES

RF

DATABASE

REFERENCES

FULLTEXT STOPLIST

TAKE OWNERSHIP

TO

DATABASE

CONTROL

FULLTEXT STOPLIST

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

LOGIN

ALTER

AL

SERVER

ALTER ANY LOGIN

LOGIN

CONTROL

CL

SERVER

CONTROL SERVER

LOGIN

IMPERSONATE

IM

SERVER

CONTROL SERVER

LOGIN

VIEW DEFINITION

VW

SERVER

VIEW ANY DEFINITION

MESSAGE TYPE

ALTER

AL

DATABASE

ALTER ANY MESSAGE TYPE

MESSAGE TYPE

CONTROL

CL

DATABASE

CONTROL

MESSAGE TYPE

REFERENCES

RF

DATABASE

REFERENCES

MESSAGE TYPE

TAKE OWNERSHIP

TO

DATABASE

CONTROL

MESSAGE TYPE

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

OBJECT

ALTER

AL

SCHEMA

ALTER

OBJECT

CONTROL

CL

SCHEMA

CONTROL

OBJECT

DELETE

DL

SCHEMA

DELETE

OBJECT

EXECUTE

EX

SCHEMA

EXECUTE

OBJECT

INSERT

IN

SCHEMA

INSERT

OBJECT

RECEIVE

RC

SCHEMA

CONTROL

OBJECT

REFERENCES

RF

SCHEMA

REFERENCES

OBJECT

SELECT

SL

SCHEMA

SELECT

OBJECT

TAKE OWNERSHIP

TO

SCHEMA

CONTROL

OBJECT

UPDATE

UP

SCHEMA

UPDATE

OBJECT

VIEW CHANGE TRACKING

VWCT

SCHEMA

VIEW CHANGE TRACKING

OBJECT

VIEW DEFINITION

VW

SCHEMA

VIEW DEFINITION

REMOTE SERVICE BINDING

ALTER

AL

DATABASE

ALTER ANY REMOTE SERVICE BINDING

REMOTE SERVICE BINDING

CONTROL

CL

DATABASE

CONTROL

REMOTE SERVICE BINDING

TAKE OWNERSHIP

TO

DATABASE

CONTROL

REMOTE SERVICE BINDING

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

ROLE

ALTER

AL

DATABASE

ALTER ANY ROLE

ROLE

CONTROL

CL

DATABASE

CONTROL

ROLE

TAKE OWNERSHIP

TO

DATABASE

CONTROL

ROLE

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

ROUTE

ALTER

AL

DATABASE

ALTER ANY ROUTE

ROUTE

CONTROL

CL

DATABASE

CONTROL

ROUTE

TAKE OWNERSHIP

TO

DATABASE

CONTROL

ROUTE

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

SEARCH PROPERTY LIST

ALTER

AL

SERVER

ALTER ANY FULLTEXT CATALOG

SEARCH PROPERTY LIST

CONTROL

CL

SERVER

CONTROL

SEARCH PROPERTY LIST

REFERENCES

RF

SERVER

REFERENCES

SEARCH PROPERTY LIST

TAKE OWNERSHIP

TO

SERVER

CONTROL

SEARCH PROPERTY LIST

VIEW DEFINITION

VW

SERVER

VIEW DEFINITION

SCHEMA

ALTER

AL

DATABASE

ALTER ANY SCHEMA

SCHEMA

CONTROL

CL

DATABASE

CONTROL

SCHEMA

CREATE SEQUENCE

CRSO

DATABASE

CONTROL

SCHEMA

DELETE

DL

DATABASE

DELETE

SCHEMA

EXECUTE

EX

DATABASE

EXECUTE

SCHEMA

INSERT

IN

DATABASE

INSERT

SCHEMA

REFERENCES

RF

DATABASE

REFERENCES

SCHEMA

SELECT

SL

DATABASE

SELECT

SCHEMA

TAKE OWNERSHIP

TO

DATABASE

CONTROL

SCHEMA

UPDATE

UP

DATABASE

UPDATE

SCHEMA

VIEW CHANGE TRACKING

VWCT

DATABASE

VIEW CHANGE TRACKING

SCHEMA

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

SERVER

ADMINISTER BULK OPERATIONS

ADBO

不适用

不适用

SERVER

ALTER ANY CONNECTION

ALCO

不适用

不适用

SERVER

ALTER ANY CREDENTIAL

ALCD

不适用

不适用

SERVER

ALTER ANY DATABASE

ALDB

不适用

不适用

SERVER

ALTER ANY ENDPOINT

ALHE

不适用

不适用

SERVER

ALTER ANY EVENT NOTIFICATION

ALES

不适用

不适用

SERVER

ALTER ANY EVENT SESSION

AAES

不适用

不适用

SERVER

ALTER ANY LINKED SERVER

ALLS

不适用

不适用

SERVER

ALTER ANY LOGIN

ALLG

不适用

不适用

SERVER

ALTER ANY SERVER AUDIT

ALAA

不适用

不适用

SERVER

ALTER ANY SERVER ROLE

ALSR

不适用

不适用

SERVER

ALTER AVAILABILITY GROUP

ALAG

不适用

不适用

SERVER

ALTER RESOURCES

ALRS

不适用

不适用

SERVER

ALTER SERVER STATE

ALSS

不适用

不适用

SERVER

ALTER SETTINGS

ALST

不适用

不适用

SERVER

ALTER TRACE

ALTR

不适用

不适用

SERVER

AUTHENTICATE SERVER

AUTH

不适用

不适用

SERVER

CONNECT SQL

COSQ

不适用

不适用

SERVER

CONTROL SERVER

CL

不适用

不适用

SERVER

CREATE ANY DATABASE

CRDB

不适用

不适用

SERVER

CREATE AVAILABILTITY GROUP

CRAC

不适用

不适用

SERVER

CREATE DDL EVENT NOTIFICATION

CRDE

不适用

不适用

SERVER

CREATE ENDPOINT

CRHE

不适用

不适用

SERVER

CREATE SERVER ROLE

CRSR

不适用

不适用

SERVER

CREATE TRACE EVENT NOTIFICATION

CRTE

不适用

不适用

SERVER

EXTERNAL ACCESS ASSEMBLY

XA

不适用

不适用

SERVER

SHUTDOWN

SHDN

不适用

不适用

SERVER

UNSAFE ASSEMBLY

XU

不适用

不适用

SERVER

VIEW ANY DATABASE

VWDB

不适用

不适用

SERVER

VIEW ANY DEFINITION

VWAD

不适用

不适用

SERVER

VIEW SERVER STATE

VWSS

不适用

不适用

SERVER ROLE

ALTER

AL

SERVER

ALTER ANY SERVER ROLE

SERVER ROLE

CONTROL

CL

SERVER

CONTROL SERVER

SERVER ROLE

TAKE OWNERSHIP

TO

SERVER

CONTROL SERVER

SERVER ROLE

VIEW DEFINITION

VW

SERVER

VIEW ANY DEFINITION

SERVICE

ALTER

AL

DATABASE

ALTER ANY SERVICE

SERVICE

CONTROL

CL

DATABASE

CONTROL

SERVICE

SEND

SN

DATABASE

CONTROL

SERVICE

TAKE OWNERSHIP

TO

DATABASE

CONTROL

SERVICE

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

SYMMETRIC KEY

ALTER

AL

DATABASE

ALTER ANY SYMMETRIC KEY

SYMMETRIC KEY

CONTROL

CL

DATABASE

CONTROL

SYMMETRIC KEY

REFERENCES

RF

DATABASE

REFERENCES

SYMMETRIC KEY

TAKE OWNERSHIP

TO

DATABASE

CONTROL

SYMMETRIC KEY

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

TYPE

CONTROL

CL

SCHEMA

CONTROL

TYPE

EXECUTE

EX

SCHEMA

EXECUTE

TYPE

REFERENCES

RF

SCHEMA

REFERENCES

TYPE

TAKE OWNERSHIP

TO

SCHEMA

CONTROL

TYPE

VIEW DEFINITION

VW

SCHEMA

VIEW DEFINITION

USER

ALTER

AL

DATABASE

ALTER ANY USER

USER

CONTROL

CL

DATABASE

CONTROL

USER

IMPERSONATE

IM

DATABASE

CONTROL

USER

VIEW DEFINITION

VW

DATABASE

VIEW DEFINITION

XML SCHEMA COLLECTION

ALTER

AL

SCHEMA

ALTER

XML SCHEMA COLLECTION

CONTROL

CL

SCHEMA

CONTROL

XML SCHEMA COLLECTION

EXECUTE

EX

SCHEMA

EXECUTE

XML SCHEMA COLLECTION

REFERENCES

RF

SCHEMA

REFERENCES

XML SCHEMA COLLECTION

TAKE OWNERSHIP

TO

SCHEMA

CONTROL

XML SCHEMA COLLECTION

VIEW DEFINITION

VW

SCHEMA

VIEW DEFINITION

权限检查算法摘要

检查权限可能很复杂。 权限检查算法包括重叠的组成员关系和所有权链接、显式和隐式权限,并且会受包含安全实体的安全类的权限影响。 该算法的一般过程是收集所有相关权限。 如果未找到阻止性 DENY,该算法将搜索提供足够访问权限的 GRANT。 该算法包含三个基本元素:安全上下文权限空间必需的权限

注意注意

无法对 sa、dbo、实体所有者、information_schema、sys 或您自己授予、拒绝或撤消权限。

  • 安全上下文

    这是提供进行访问权限检查的权限的一组主体。 这些是与当前登录名或用户有关的权限,除非使用 EXECUTE AS 语句将安全上下文更改为其他登录名或用户。 安全上下文包括以下主体:

    • 登录名

    • 用户

    • 角色成员资格

    • Windows 组成员身份

    • 如果使用模块签名,则指证书的任何登录名或用户帐户(该证书用于对用户当前正在执行的模块进行签名),以及该主体的相关角色成员资格。

  • 权限空间

    这是安全实体和所有包含安全实体的安全类。 例如,表(安全实体)包含在架构安全类和数据库安全类中。 访问权限会受表级、架构级、数据库级和服务器级权限影响。 有关详细信息,请参阅权限层次结构(数据库引擎)

  • 必需的权限

    必需的权限种类。 例如,INSERT、UPDATE、DELETE、SELECT、EXECUTE、ALTER、CONTROL 等等。

    访问可能需要多个权限,如下面的示例中所示:

    • 存储过程可能既需要针对存储过程的 EXECUTE 权限,也需要针对该存储过程引用的每个表的 INSERT 权限。

    • 动态管理视图可能同时需要针对该视图的 VIEW SERVER STATE 和 SELECT 权限。

算法的通用步骤

算法确定是否允许访问某个安全对象时,使用的具体步骤可能会变化,这取决于涉及的主体和安全对象。 但是,算法会执行以下通用步骤:

  1. 如果登录名是 sysadmin 固定服务器角色的成员或用户是当前数据库中的 dbo 用户,则绕过权限检查。

  2. 如果所有权链接适用且以前针对链中对象的访问权限检查通过了安全检查,则允许访问。

  3. 聚合与调用方关联的服务器级、数据库级和已签名模块的标识,以创建安全上下文

  4. 对于该安全上下文,收集为权限空间授予或拒绝的所有权限。 权限可以明确表述为 GRANT、GRANT WITH GRANT 或 DENY,也可以是隐含或涵盖的权限 GRANT 或 DENY。 例如,针对架构的 CONTROL 权限隐含对表的 CONTROL, 对表的 CONTROL 则隐含 SELECT。 因此,如果授予了针对架构的 CONTROL 权限,也就授予了对表的 SELECT 权限。 如果拒绝了对表的 CONTROL 权限,也就拒绝了对表的 SELECT 权限。

    注意注意

    列级权限的 GRANT 覆盖对象级的 DENY。

  5. 标识必需的权限

  6. 如果对于权限空间中的对象,直接或隐式拒绝授予安全上下文中任何标识必需的权限,则权限检查失败。

  7. 如果对于权限空间中的任何对象,没有拒绝必需的权限必需的权限包含对安全上下文中任何标识直接或隐式的 GRANT 或 GRANT WITH GRANT 权限,则通过权限检查。

示例

本节中的以下示例说明如何检索权限信息。

A.返回可授予权限的完整列表

下列语句使用 fn_builtin_permissions 函数返回所有数据库引擎权限。 有关详细信息,请参阅 sys.fn_builtin_permissions (Transact-SQL)

SELECT * FROM fn_builtin_permissions(default);
GO

B.返回针对某类对象的权限

下面的示例使用 fn_builtin_permissions 以查看可用于安全对象类别的所有权限。 此示例将返回对程序集的权限。

SELECT * FROM fn_builtin_permissions('assembly');
GO  

C.返回授予对象的执行主体的权限

以下示例使用 fn_my_permissions 返回指定安全对象的调用主体所具有的有效权限列表。 此示例将返回对名为 Orders55 的对象的权限。 有关详细信息,请参阅 sys.fn_my_permissions (Transact-SQL)

SELECT * FROM fn_my_permissions('Orders55', 'object');
GO

D.返回适用于指定对象的权限

以下示例将返回适用于名为 Yttrium 的对象的权限。 请注意,使用了内置函数 OBJECT_ID 来检索对象 Yttrium 的 ID。

SELECT * FROM sys.database_permissions 
    WHERE major_id = OBJECT_ID('Yttrium');
GO

请参阅

参考

sys.database_permissions (Transact-SQL)

概念

权限层次结构(数据库引擎)