Delen via


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 Preview

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.

Column name Data type 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

LIJST MET EIGENSCHAPPEN ZOEKEN

REFERENTIE VOOR DATABASEBEREIK

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) Permission name.
state char(1) Permission state:

D = Weigeren

R = Intrekken

G = Toekenning

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

DENY

REVOKE

GRANT

GRANT_WITH_GRANT_OPTION

Database Permissions

De volgende typen machtigingen zijn mogelijk.

Permission type Permission name Van toepassing op beveiligbaar
AADS EEN GEBEURTENISSESSIE VOOR DE DATABASE WIJZIGEN DATABASE
AAMK EEN MASKER WIJZIGEN DATABASE
AEDS EEN EXTERNE GEGEVENSBRON WIJZIGEN DATABASE
AEFF EVENTUELE EXTERNE BESTANDSINDELINGEN WIJZIGEN DATABASE
AL ALTER TOEPASSINGSROL, ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, USER, XML SCHEMA COLLECTION
ALAK ASYMMETRISCHE SLEUTEL WIJZIGEN DATABASE
ALAR ELKE TOEPASSINGSROL WIJZIGEN DATABASE
ALAS ELKE ASSEMBLY WIJZIGEN DATABASE
ALCF ELK CERTIFICAAT WIJZIGEN DATABASE
ALDS ELKE DATASPACE WIJZIGEN DATABASE
ALED ELKE MELDING VOOR DATABASE-GEBEURTENIS WIJZIGEN DATABASE
ALFT ELKE VOLLEDIGE TEKSTCATALOGUS WIJZIGEN DATABASE
ALMT ELK BERICHTTYPE WIJZIGEN DATABASE
ALRL ELKE ROL WIJZIGEN DATABASE
ALRT ELKE ROUTE WIJZIGEN DATABASE
ALSB EEN EXTERNE SERVICEBINDING WIJZIGEN DATABASE
ALSC EEN CONTRACT WIJZIGEN DATABASE
ALSK ELKE SYMMETRISCHE SLEUTEL WIJZIGEN DATABASE
ALSM EEN SCHEMA WIJZIGEN DATABASE
ALSV ELKE SERVICE WIJZIGEN DATABASE
ALTG EEN DDL-TRIGGER VOOR DATABASES WIJZIGEN DATABASE
ALUS ELKE GEBRUIKER WIJZIGEN DATABASE
AUTH AUTHENTICATE DATABASE
BADB BACKUP DATABASE DATABASE
BALO BACKUP LOG DATABASE
CL CONTROL TOEPASSINGSROL, ASSEMBLY, ASYMMETRISCHE SLEUTEL, CERTIFICAAT, CONTRACT, DATABASE, FULLTEXT-CATALOGUS, BERICHTTYPE, OBJECT, EXTERNE SERVICEBINDING, ROL, ROUTE, SCHEMA, SERVICE, SYMMETRISCHE SLEUTEL, TYPE, GEBRUIKER, XML-SCHEMAVERZAMELING
CO CONNECT DATABASE
CORP CONNECT REPLICATION DATABASE
CP CHECKPOINT DATABASE
CRAG CREATE AGGREGATE DATABASE
CRAK ASYMMETRISCHE SLEUTEL MAKEN DATABASE
CRAS CREATE ASSEMBLY DATABASE
CRCF CREATE CERTIFICATE DATABASE
CRDB CREATE DATABASE DATABASE
CRDF CREATE DEFAULT DATABASE
CRED DDL-GEBEURTENISMELDING VOOR DATABASE MAKEN DATABASE
CRFN CREATE FUNCTION DATABASE
CRFT VOLLEDIGE TEKSTCATALOGUS MAKEN DATABASE
CRMT BERICHTTYPE MAKEN DATABASE
CRPR CREATE PROCEDURE DATABASE
CRQU CREATE QUEUE DATABASE
CRRL CREATE ROLE DATABASE
CRRT CREATE ROUTE DATABASE
CRRU CREATE RULE DATABASE
CRSB EXTERNE SERVICEBINDING MAKEN DATABASE
CRSC CREATE CONTRACT DATABASE
CRSK SYMMETRISCHE SLEUTEL MAKEN 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.

XML-SCHEMAVERZAMELING MAKEN
DATABASE
DABO DATABASE BULKBEWERKINGEN BEHEREN 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, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, SCHEMA, SYMMETRIC KEY, TYPE, XML SCHEMA COLLECTION
SL SELECT DATABASE, OBJECT, SCHEMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN MELDINGEN VOOR ABONNEREN-QUERY'S DATABASE
TO TAKE OWNERSHIP ASSEMBLY, ASYMMETRIC KEY, CERTIFICATE, CONTRACT, DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, OBJECT, REMOTE SERVICE BINDING, ROLE, ROUTE, SCHEMA, SERVICE, SYMMETRIC KEY, TYPE, XML SCHEMA COLLECTION
UP UPDATE DATABASE, OBJECT, SCHEMA
VW VIEW DEFINITION TOEPASSINGSROL, ASSEMBLY, ASYMMETRISCHE SLEUTEL, CERTIFICAAT, CONTRACT, DATABASE, FULLTEXT-CATALOGUS, BERICHTTYPE, OBJECT, EXTERNE SERVICEBINDING, ROL, ROUTE, SCHEMA, SERVICE, SYMMETRISCHE SLEUTEL, TYPE, GEBRUIKER, XML-SCHEMAVERZAMELING
VWCK ELKE DEFINITIE VAN KOLOMVERSLEUTELINGSSLEUTEL WEERGEVEN DATABASE
VWCM EEN KOLOMHOOFDSLEUTELDEFINITIE WEERGEVEN DATABASE
VWCT WIJZIGINGEN BIJHOUDEN WEERGEVEN TABLE, SCHEMA
VWDS DATABASESTATUS WEERGEVEN DATABASE

Machtigingen voor INTREKKEN en kolom-uitzonderingen

In de meeste gevallen wordt met de opdracht REVOKE de vermelding GRANT of DENY verwijderd uit sys.database_permissions.

Het is echter mogelijk om machtigingen voor een object toe te kennen of te weigeren en vervolgens die machtiging voor een kolom in te trekken. Deze kolom-uitzonderingsmachtiging wordt weergegeven 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 machtigingen worden weergegeven in sys.database_permissions als één GRANT (in de tabel) en één REVOKE (in de kolom).

Important

REVOKE verschilt van DENY, omdat de Sales-principal nog steeds toegang heeft tot de kolom via andere machtigingen. Als we machtigingen hadden geweigerd in plaats van ze af te roepen, konden Sales de inhoud van de kolom niet weergeven omdat DENY altijd grant vervangt.

Permissions

Elke gebruiker kan zijn eigen machtigingen zien. Als u machtigingen voor andere gebruikers wilt zien, moet u VIEW DEFINITION, ALTER ANY USER of een machtiging voor een gebruiker hebben. Als u door de gebruiker gedefinieerde rollen wilt zien, moet u ALTER ANY ROLE of lidmaatschap van de rol (zoals openbaar) hebben.

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;

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 voorbeelddatabaseAdventureWorksDW2022:

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 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

See also

Next steps