sys.database_permissions (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric

Retourneert een rij voor elke machtiging of kolom-uitzonderingsmachtiging in de database. Voor kolommen is er een rij voor elke machtiging die verschilt van de bijbehorende machtiging op objectniveau. Als de kolommachtiging hetzelfde is als de bijbehorende objectmachtiging, is er geen rij voor en is de toegepaste machtiging dat van het object.

Important

Machtigingen op kolomniveau overschrijven machtigingen op objectniveau voor dezelfde entiteit.

Kolomnaam Gegevenstype Description
class tinyint Identificeert klasse waarvoor de machtiging bestaat. Zie sys.securable_classes (Transact-SQL)voor meer informatie.

0 = Database
1 = Object of Kolom
3 = Schema
4 = Database-principal
5 = Assembly - Van toepassing op: SQL Server 2008 (10.0.x) en latere versies.
6 = Type
10 = XML-schemaverzameling -
van toepassing op: SQL Server 2008 (10.0.x) en latere versies.
15 = Berichttype - Van toepassing op: SQL Server 2008 (10.0.x) en latere versies.
16 = Servicecontract - Van toepassing op: SQL Server 2008 (10.0.x) en latere versies.
17 = Service - Van toepassing op: SQL Server 2008 (10.0.x) en latere versies.
18 = Remote Service Binding - Van toepassing op: SQL Server 2008 (10.0.x) en latere versies.
19 = Route - Van toepassing op: SQL Server 2008 (10.0.x) en latere versies.
23 =Full-Text Catalogus - Van toepassing op: SQL Server 2008 (10.0.x) en latere versies.
24 = Symmetrische sleutel - van toepassing op: SQL Server 2008 (10.0.x) en latere versies.
25 = Certificaat - Van toepassing op: SQL Server 2008 (10.0.x) en latere versies.
26 = Asymmetrische sleutel - van toepassing op: SQL Server 2008 (10.0.x) en latere versies.
29 = Fulltext Stoplist - Van toepassing op: SQL Server 2008 (10.0.x) en latere versies.
31 = Lijst met zoekeigenschappen - van toepassing op: SQL Server 2008 (10.0.x) en latere versies.
32 = Referentie voor databasebereik - van toepassing op: SQL Server 2016 (13.x) en latere versies.
34 = externe taal - van toepassing op: SQL Server 2019 (15.x) en latere versies.
class_desc nvarchar(60) Beschrijving van de klasse waarvoor de machtiging bestaat.

DATABASE

OBJECT_OR_COLUMN

SCHEMA

DATABASE_PRINCIPAL

ASSEMBLY

TYPE

XML_SCHEMA_COLLECTION

MESSAGE_TYPE

SERVICE_CONTRACT

SERVICE

REMOTE_SERVICE_BINDING

ROUTE

FULLTEXT_CATALOG

SYMMETRIC_KEYS

CERTIFICATE

ASYMMETRIC_KEY

FULLTEXT STOPLIST

SEARCH PROPERTY LIST

DATABASE SCOPED CREDENTIAL

EXTERNAL LANGUAGE
major_id int Id van ding waarvoor de machtiging bestaat, geïnterpreteerd volgens klasse. Meestal is het major_id gewoon het type id dat van toepassing is op wat de klasse vertegenwoordigt.

0 = De database zelf

>0 = Object-IDs voor gebruikersobjecten

<0 = Object-IDs voor systeemobjecten
minor_id int Secondary-ID van dingen waarvoor de machtiging bestaat, geïnterpreteerd volgens klasse. Vaak is de minor_id nul, omdat er geen subcategorie beschikbaar is voor de klasse van het object. Anders is het de Column-ID van een tabel.
grantee_principal_id int Database-principal-id waaraan de machtigingen worden verleend.
grantor_principal_id int Database-principal-id van de grantor van deze machtigingen.
type char(4) Type databasemachtiging. Zie de volgende tabel voor een lijst met machtigingstypen.
permission_name nvarchar(128) Toestemming naam.
state char(1) Toestemmingsstaat:

D = Weigeren

R = Intrekken

G = Toekenning

W = Toekenning met toekenningsoptie
state_desc nvarchar(60) Beschrijving van machtigingsstatus:

DENY

REVOKE

GRANT

GRANT_WITH_GRANT_OPTION

Databasemachtigingen

De volgende typen machtigingen zijn mogelijk.

Machtigingstype Machtigingnaam Van toepassing op beveiligbaar
AADS ALTER ANY DATABASEEVENT SESSION DATABASE
AAMK EEN MASKER WIJZIGEN DATABASE
AEDS WIJZIG EEN EXTERNAL DATA SOURCE DATABASE
AEFF WIJZIG EEN EXTERNAL FILE FORMAT DATABASE
AL ALTER APPLICATION ROLE, , , , , , , , OBJECT, REMOTE SERVICE BINDING, , , SERVICESCHEMASYMMETRIC KEYUSERROUTEROLEMESSAGE TYPEFULLTEXT CATALOGDATABASECONTRACTCERTIFICATEASYMMETRIC KEYASSEMBLYXML SCHEMA COLLECTION
ALAK WIJZIG EEN ASYMMETRIC KEY DATABASE
ALAR WIJZIG EEN APPLICATION ROLE DATABASE
ALAS WIJZIG EEN ASSEMBLY DATABASE
ALCF WIJZIG EEN CERTIFICATE DATABASE
ALDS ELKE DATASPACE WIJZIGEN DATABASE
ALED ALTER ANY DATABASEEVENT NOTIFICATION DATABASE
ALFT WIJZIG EEN FULLTEXT CATALOG DATABASE
ALMT WIJZIG EEN MESSAGE TYPE DATABASE
ALRL WIJZIG EEN ROLE DATABASE
ALRT WIJZIG EEN ROUTE DATABASE
ALSB WIJZIG EEN REMOTE SERVICE BINDING DATABASE
ALSC WIJZIG EEN CONTRACT DATABASE
ALSK WIJZIG EEN SYMMETRIC KEY DATABASE
ALSM WIJZIG EEN SCHEMA DATABASE
ALSV WIJZIG EEN SERVICE DATABASE
ALTG VERANDER ELKE DATABASE DDL TRIGGER DATABASE
ALUS WIJZIG EEN USER DATABASE
AUTH AUTHENTICATE DATABASE
BADB BACKUP DATABASE DATABASE
BALO BACKUP LOG DATABASE
CL CONTROL APPLICATION ROLE, , , , , , , , MESSAGE TYPE, , OBJECT, REMOTE SERVICE BINDING, , ROUTEROLE, SCHEMASYMMETRIC KEYTYPESERVICEUSER, , FULLTEXT CATALOGDATABASECONTRACTCERTIFICATEASYMMETRIC KEYASSEMBLYXML SCHEMA COLLECTION
CO CONNECT DATABASE
CORP CONNECTREPLICATIE DATABASE
CP CHECKPOINT DATABASE
CRAG CREATE AGGREGATE DATABASE
CRAK CREATE ASYMMETRIC KEY DATABASE
CRAS CREATE ASSEMBLY DATABASE
CRCF CREATE CERTIFICATE DATABASE
CRDB CREATE DATABASE DATABASE
CRDF CREATE DEFAULT DATABASE
CRED CREATE DATABASE DDL EVENT NOTIFICATION DATABASE
CRFN CREATE FUNCTION DATABASE
CRFT CREATE FULLTEXT CATALOG DATABASE
CRMT CREATE MESSAGE TYPE DATABASE
CRPR CREATE PROCEDURE DATABASE
CRQU CREATE QUEUE DATABASE
CRRL CREATE ROLE DATABASE
CRRT CREATE ROUTE DATABASE
CRRU CREATE RULE DATABASE
CRSB CREATE REMOTE SERVICE BINDING DATABASE
CRSC CREATE CONTRACT DATABASE
CRSK CREATE SYMMETRIC KEY DATABASE
CRSM CREATE SCHEMA DATABASE
CRSN CREATE SYNONYM DATABASE
CRSO Van toepassing op: SQL Server 2012 (11.x) en latere versies.

CREATE SEQUENCE
DATABASE
CRSV CREATE SERVICE DATABASE
CRTB CREATE TABLE DATABASE
CRTY CREATE TYPE DATABASE
CRVW CREATE VIEW DATABASE
CRXS van toepassing op: SQL Server 2008 (10.0.x) en latere versies.

CREATE XML SCHEMA COLLECTION
DATABASE
DABO BEHEER DATABASE VAN BULKOPERATIES DATABASE
DL DELETE DATABASE, OBJECT, SCHEMA
EAES EEN EXTERN SCRIPT UITVOEREN DATABASE
EX EXECUTE ASSEMBLY, DATABASE, OBJECT, SCHEMA, TYPE, XML SCHEMA COLLECTION
IM IMPERSONATE USER
IN INSERT DATABASE, OBJECT, SCHEMA
RC RECEIVE OBJECT
RF REFERENCES ASSEMBLY, , , , , , , MESSAGE TYPE, OBJECT, SCHEMA, , SYMMETRIC KEYTYPE, FULLTEXT CATALOGDATABASECONTRACTCERTIFICATEASYMMETRIC KEYXML SCHEMA COLLECTION
SL SELECT DATABASE, OBJECT, SCHEMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN MELDINGEN VOOR ABONNEREN-QUERY'S DATABASE
TO EIGENAAR ASSEMBLY, , , , , , , MESSAGE TYPE, , OBJECT, REMOTE SERVICE BINDING, , ROUTE, SCHEMATYPESYMMETRIC KEYSERVICEROLEFULLTEXT CATALOGDATABASECONTRACTCERTIFICATEASYMMETRIC KEYXML SCHEMA COLLECTION
UP UPDATE DATABASE, OBJECT, SCHEMA
VW VIEW DEFINITIE APPLICATION ROLE, , , , , , , , MESSAGE TYPE, , OBJECT, REMOTE SERVICE BINDING, , ROUTEROLE, SCHEMASYMMETRIC KEYTYPESERVICEUSER, , FULLTEXT CATALOGDATABASECONTRACTCERTIFICATEASYMMETRIC KEYASSEMBLYXML SCHEMA COLLECTION
VWCK VIEW ELKE COLUMN ENCRYPTION KEY DEFINITIE DATABASE
VWCM VIEW ELKE COLUMN MASTER KEY DEFINITIE DATABASE
VWCT VIEW WIJZIGINGSTRACKING TABLE, SCHEMA
VWDS VIEW DATABASE STAAT DATABASE

REVOKE en kolomuitzonderingsrechten

In de meeste gevallen verwijdert het REVOKE commando de GRANT or-invoer DENY uit sys.database_permissions.

Het is echter mogelijk om of rechten op GRANTDENY een object te krijgen en vervolgens REVOKE die toestemming op een kolom. Deze kolomuitzonderingsvergunning verschijnt als REVOKE in sys.database_permissions. Bekijk het volgende voorbeeld:

GRANT SELECT ON Person.Person TO [Sales];

REVOKE SELECT ON Person.Person(AdditionalContactInfo) FROM [Sales];

Deze permissies verschijnen in sys.database_permissions als één GRANT (in de tabel) en één REVOKE (in de kolom).

Important

REVOKE is anders dan DENY, aangezien de Sales principal nog steeds toegang tot de kolom kan hebben via andere rechten. Als we de rechten hadden geweigerd in plaats van ze in te trekken, Sales zouden we de inhoud van de kolom niet kunnen bekijken omdat DENY altijd GRANToverstijgt .

Permissions

Elke gebruiker kan zijn eigen machtigingen zien. Om permissies voor andere gebruikers te zien, vereist VIEW DEFINITIE, VERANDER EEN , USERof een enkele toestemming op een gebruiker. Om door gebruikers gedefinieerde rollen te zien, is ALTER ANY ROLEvereist, of lidmaatschap van de rol (zoals publiek).

De zichtbaarheid van de metagegevens in catalogusweergaven is beperkt tot beveiligbare items waarvan een gebruiker eigenaar is of waarvoor de gebruiker een bepaalde machtiging heeft gekregen. Zie Zichtbaarheidsconfiguratie voor metagegevensvoor meer informatie.

Examples

A. Alle machtigingen van database-principals weergeven

In de volgende query worden de machtigingen vermeld die expliciet aan database-principals zijn verleend of geweigerd.

Important

De machtigingen van vaste databaserollen worden niet weergegeven in sys.database_permissions. Database-principals hebben daarom mogelijk aanvullende machtigingen die hier niet worden vermeld.

SELECT pr.principal_id
    ,pr.name
    ,pr.type_desc
    ,pr.authentication_type_desc
    ,pe.state_desc
    ,pe.permission_name  
FROM sys.database_principals AS pr  
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id;  

B. Lijstmachtigingen voor schemaobjecten in een database

Met de volgende query worden sys.database_principals en sys.database_permissions toegevoegd aan sys.objects en sys.schema's om machtigingen weer te geven die aan specifieke schemaobjecten zijn verleend of geweigerd.

SELECT pr.principal_id
    ,pr.name
    ,pr.type_desc
    ,pr.authentication_type_desc
    ,pe.state_desc
    ,pe.permission_name
    ,s.name + '.' + o.name AS ObjectName
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id
WHERE pe.class = 1;

C. Lijstmachtigingen voor een specifiek object

U kunt het vorige voorbeeld gebruiken om query's uit te voeren op machtigingen die specifiek zijn voor één databaseobject.

Denk bijvoorbeeld aan de volgende gedetailleerde machtigingen die zijn verleend aan een databasegebruiker test in de voorbeelddatabaseAdventureWorksDW2025:

GRANT SELECT ON dbo.vAssocSeqOrders TO [test];

Zoek de gedetailleerde machtigingen die zijn toegewezen aan dbo.vAssocSeqOrders:

SELECT pr.principal_id
    ,pr.name
    ,pr.type_desc
    ,pr.authentication_type_desc
    ,pe.state_desc
    ,pe.permission_name
    ,s.name + '.' + o.name AS ObjectName
FROM sys.database_principals AS pr
INNER JOIN sys.database_permissions AS pe ON pe.grantee_principal_id = pr.principal_id
INNER JOIN sys.objects AS o ON pe.major_id = o.object_id
INNER JOIN sys.schemas AS s ON o.schema_id = s.schema_id
WHERE pe.class = 1
    AND o.name = 'vAssocSeqOrders'
    AND s.name = 'dbo';

Retourneert de uitvoer:

principal_id    name    type_desc    authentication_type_desc    state_desc    permission_name    ObjectName
5    test    SQL_USER    INSTANCE    GRANT    SELECT    dbo.vAssocSeqOrders

Zie ook

Volgende stappen