sys.database_permissions (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)SQL-analysslutpunkt i Microsoft FabricLager i Microsoft FabricSQL-databas i Microsoft Fabric

Returnerar en rad för varje behörighet eller kolumn-undantagsbehörighet i databasen. För kolumner finns det en rad för varje behörighet som skiljer sig från motsvarande behörighet på objektnivå. Om kolumnbehörigheten är samma som motsvarande objektbehörighet finns det ingen rad för den och den behörighet som tillämpas är objektets.

Important

Behörigheter på kolumnnivå åsidosätter behörigheter på objektnivå på samma entitet.

Kolumnnamn Datatyp Description
class tinyint Identifierar klassen där behörigheten finns. Mer information finns i sys.securable_classes (Transact-SQL).

0 = Databas
1 = Objekt eller kolumn
3 = Schema
4 = Huvudnamn för databasen
5 = Sammansättning – gäller för: SQL Server 2008 (10.0.x) och senare versioner.
6 = Typ
10 = XML-schemasamling –
gäller för: SQL Server 2008 (10.0.x) och senare versioner.
15 = Meddelandetyp – gäller för: SQL Server 2008 (10.0.x) och senare versioner.
16 = Tjänstkontrakt – gäller för: SQL Server 2008 (10.0.x) och senare versioner.
17 = Tjänst – gäller för: SQL Server 2008 (10.0.x) och senare versioner.
18 = Fjärrtjänstbindning – gäller för: SQL Server 2008 (10.0.x) och senare versioner.
19 = Route – Gäller för: SQL Server 2008 (10.0.x) och senare versioner.
23 =Full-Text Catalog – gäller för: SQL Server 2008 (10.0.x) och senare versioner.
24 = Symmetrisk nyckel – gäller för: SQL Server 2008 (10.0.x) och senare versioner.
25 = Certifikat – gäller för: SQL Server 2008 (10.0.x) och senare versioner.
26 = Asymmetrisk nyckel – gäller för: SQL Server 2008 (10.0.x) och senare versioner.
29 = Fulltext Stoplist – Gäller för: SQL Server 2008 (10.0.x) och senare versioner.
31 = Sökegenskapslista – gäller för: SQL Server 2008 (10.0.x) och senare versioner.
32 = Databasomfattande autentiseringsuppgifter – gäller för: SQL Server 2016 (13.x) och senare versioner.
34 = Externt språk – gäller för: SQL Server 2019 (15.x) och senare versioner.
class_desc nvarchar(60) Beskrivning av klassen där behörigheten finns.

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 för det som behörigheten finns på, tolkat enligt klass. Vanligtvis major_id helt enkelt den typ av ID som gäller för vad klassen representerar.

0 = Själva databasen

>0 = Object-IDs för användarobjekt

<0 = Object-IDs för systemobjekt
minor_id int Secondary-ID av det som behörigheten finns på, tolkad enligt klass. Ofta är minor_id noll, eftersom det inte finns någon underkategori tillgänglig för objektklassen. Annars är det en tabells Column-ID.
grantee_principal_id int Databashuvudnamns-ID som behörigheterna beviljas till.
grantor_principal_id int Huvud-ID för databasen för den som beviljar dessa behörigheter.
type char(4) Databasbehörighetstyp. En lista över behörighetstyper finns i nästa tabell.
permission_name nvarchar(128) Tillståndsnamn.
state char(1) Tillståndsstatus:

D = Neka

R = Återkalla

G = Bevilja

W = Bevilja med beviljandealternativ
state_desc nvarchar(60) Beskrivning av behörighetstillstånd:

DENY

REVOKE

GRANT

GRANT_WITH_GRANT_OPTION

Databasbehörigheter

Följande typer av behörigheter är möjliga.

Behörighetstyp Behörighetens namn Gäller för skyddsbara
AADS ALTER ANY DATABASEEVENT SESSION DATABASE
AAMK ÄNDRA VALFRI MASK DATABASE
AEDS ÄNDRA NÅGON EXTERNAL DATA SOURCE DATABASE
AEFF ÄNDRA NÅGON EXTERNAL FILE FORMAT DATABASE
AL ALTER APPLICATION ROLE, , , , , , DATABASE, FULLTEXT CATALOG, MESSAGE TYPE, , OBJEKT, REMOTE SERVICE BINDING, ROLESERVICESYMMETRIC KEYSCHEMAUSERROUTE, , CONTRACTCERTIFICATEASYMMETRIC KEYASSEMBLYXML SCHEMA COLLECTION
ALAK ÄNDRA NÅGON ASYMMETRIC KEY DATABASE
ALAR ÄNDRA NÅGON APPLICATION ROLE DATABASE
ALAS ÄNDRA NÅGON ASSEMBLY DATABASE
ALCF ÄNDRA NÅGON CERTIFICATE DATABASE
ALDS ÄNDRA ALLA DATARYMDER DATABASE
ALED ALTER ANY DATABASEEVENT NOTIFICATION DATABASE
ALFT ÄNDRA NÅGON FULLTEXT CATALOG DATABASE
ALMT ÄNDRA NÅGON MESSAGE TYPE DATABASE
ALRL ÄNDRA NÅGON ROLE DATABASE
ALRT ÄNDRA NÅGON ROUTE DATABASE
ALSB ÄNDRA NÅGON REMOTE SERVICE BINDING DATABASE
ALSC ÄNDRA NÅGON CONTRACT DATABASE
ALSK ÄNDRA NÅGON SYMMETRIC KEY DATABASE
ALSM ÄNDRA NÅGON SCHEMA DATABASE
ALSV ÄNDRA NÅGON SERVICE DATABASE
ALTG ÄNDRA VILKEN DATABASE DDL SOM HELST TRIGGER DATABASE
ALUS ÄNDRA NÅGON USER DATABASE
AUTH AUTHENTICATE DATABASE
BADB BACKUP DATABASE DATABASE
BALO BACKUP LOGG DATABASE
CL CONTROL APPLICATION ROLE, , , , , , , , MESSAGE TYPE, OBJEKT, REMOTE SERVICE BINDING, , ROLEROUTE, , SYMMETRIC KEYTYPEUSERSERVICESCHEMAFULLTEXT CATALOGDATABASECONTRACTCERTIFICATEASYMMETRIC KEYASSEMBLYXML SCHEMA COLLECTION
CO CONNECT DATABASE
CORP ANSLUTNINGSREPLIKATION 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 gäller för: SQL Server 2012 (11.x) och senare versioner.

CREATE SEQUENCE
DATABASE
CRSV CREATE SERVICE DATABASE
CRTB CREATE TABLE DATABASE
CRTY CREATE TYPE DATABASE
CRVW CREATE VIEW DATABASE
CRXS gäller för: SQL Server 2008 (10.0.x) och senare versioner.

CREATE XML SCHEMA COLLECTION
DATABASE
DABO ADMINISTRERA DATABASE BULKOPERATIONER DATABASE
DL DELETE DATABASE, OBJEKT, SCHEMA
EAES KÖRA ETT EXTERNT SKRIPT DATABASE
EX EXECUTE ASSEMBLY, DATABASE, OBJEKT, SCHEMA, TYPE, XML SCHEMA COLLECTION
IM IMPERSONATE USER
IN INSERT DATABASE, OBJEKT, SCHEMA
RC RECEIVE OBJECT
RF REFERENCES ASSEMBLY, , , , , DATABASEFULLTEXT CATALOG, , MESSAGE TYPE, OBJEKT, SCHEMA, , SYMMETRIC KEYTYPE, CONTRACTCERTIFICATEASYMMETRIC KEYXML SCHEMA COLLECTION
SL SELECT DATABASE, OBJEKT, SCHEMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN PRENUMERERA PÅ FRÅGEMEDDELANDEN DATABASE
TO TA ÄGARSKAP ASSEMBLY, , , , , , , OBJEKT, REMOTE SERVICE BINDING, , ROLE, SERVICESYMMETRIC KEYSCHEMATYPEROUTEMESSAGE TYPEFULLTEXT CATALOGDATABASECONTRACTCERTIFICATEASYMMETRIC KEYXML SCHEMA COLLECTION
UP UPDATE DATABASE, OBJEKT, SCHEMA
VW VIEW DEFINITION APPLICATION ROLE, , , , , , , , MESSAGE TYPE, OBJEKT, REMOTE SERVICE BINDING, , ROLEROUTE, , SYMMETRIC KEYTYPEUSERSERVICESCHEMAFULLTEXT CATALOGDATABASECONTRACTCERTIFICATEASYMMETRIC KEYASSEMBLYXML SCHEMA COLLECTION
VWCK VIEW VILKEN DEFINITION SOM COLUMN ENCRYPTION KEY helst DATABASE
VWCM VIEW VILKEN DEFINITION SOM COLUMN MASTER KEY helst DATABASE
VWCT VIEW ÄNDRINGSSPÅRNING TABLE, SCHEMA
VWDS VIEW DATABASE DELSTAT DATABASE

REVOKE och kolumnundantagsbehörigheter

I de flesta fall tar kommandot REVOKE bort or-posten GRANTDENY från sys.database_permissions.

Det är dock möjligt att GRANT få behörigheter DENY på ett objekt och sedan REVOKE den behörigheten på en kolumn. Denna kolumnundantagsbehörighet visas som REVOKE i sys.database_permissions. Tänk på följande exempel:

GRANT SELECT ON Person.Person TO [Sales];

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

Dessa behörigheter visas i sys.database_permissions som ett GRANT (i tabellen) och ett REVOKE (i kolumnen).

Important

REVOKE skiljer sig från DENY, eftersom Sales huvudpersonen fortfarande kan ha tillgång till kolumnen via andra behörigheter. Om vi hade nekat behörigheter istället för att återkalla dem, Sales skulle vi inte kunna se innehållet i kolumnen eftersom DENY alltid GRANTersätter .

Permissions

Alla användare kan se sina egna behörigheter. För att se behörigheter för andra användare krävs VIEW DEFINITION, ÄNDRA NÅGON USER, eller någon behörighet för en användare. För att se användardefinierade roller krävs ALTER ANY ROLE, eller medlemskap i rollen (såsom offentlig).

Synligheten för metadata i katalogvyer är begränsad till skyddsbara objekt som en användare antingen äger eller som användaren har beviljats viss behörighet för. Mer information finns i konfiguration av metadatasynlighet.

Examples

A. Visa en lista över alla behörigheter för databasobjekt

I följande fråga visas de behörigheter som uttryckligen beviljas eller nekas till databashuvudnamn.

Important

Behörigheterna för fasta databasroller visas inte i sys.database_permissions. Därför kan databashuvudnamn ha ytterligare behörigheter som inte visas här.

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. Visa behörigheter för schemaobjekt i en databas

Följande fråga kopplar sys.database_principals och sys.database_permissions till sys.objects och sys.schemas för att visa behörigheter som beviljats eller nekats till specifika schemaobjekt.

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. Visa en lista över behörigheter för ett specifikt objekt

Du kan använda föregående exempel för att fråga efter behörigheter som är specifika för ett enskilt databasobjekt.

Överväg till exempel följande detaljerade behörigheter som beviljats en databasanvändare test i exempeldatabasenAdventureWorksDW2025:

GRANT SELECT ON dbo.vAssocSeqOrders TO [test];

Hitta de detaljerade behörigheter som tilldelats 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';

Returnerar utdata:

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

Se även

Nästa steg