Dela via


sys.database_permissions (Transact-SQL)

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-analysslutpunkt i Microsoft FabricWarehouse 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.

Viktig

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

Kolumnnamn Datatyp Beskrivning
klass pytteliten 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.

DATABAS

OBJECT_OR_COLUMN

SCHEMAT

DATABASE_PRINCIPAL

FÖRSAMLING

TYP

XML_SCHEMA_COLLECTION

MESSAGE_TYPE

SERVICE_CONTRACT

TJÄNST

REMOTE_SERVICE_BINDING

VÄG

FULLTEXT_CATALOG

SYMMETRIC_KEYS

INTYG

ASYMMETRIC_KEY

STOPPLISTA FÖR FULLTEXT

SÖK EGENSKAPSLISTA

DATABASOMFÅNGSBEGRÄNSADE AUTENTISERINGSUPPGIFTER

EXTERNT SPRÅK
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.
typ tecken(4) Databasbehörighetstyp. En lista över behörighetstyper finns i nästa tabell.
permission_name nvarchar(128) Behörighetsnamn.
tillstånd tecken(1) Behörighetstillstånd:

D = Neka

R = Återkalla

G = Bevilja

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

NEKA

ÅTERKALLA

BEVILJA

GRANT_WITH_GRANT_OPTION

Databasbehörigheter

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

Behörighetstyp Behörighetsnamn Gäller för skyddsbara
AADS ÄNDRA EN DATABASHÄNDELSESESSION DATABAS
AAMK ÄNDRA VALFRI MASK DATABAS
AEDS ÄNDRA ALLA EXTERNA DATAKÄLLOR DATABAS
AEFF ÄNDRA VALFRITT EXTERNT FILFORMAT DATABAS
AL ÄNDRA PROGRAMROLL, SAMMANSÄTTNING, ASYMMETRISK NYCKEL, CERTIFIKAT, KONTRAKT, DATABAS, FULLTEXTKATALOG, MEDDELANDETYP, OBJEKT, FJÄRRTJÄNSTBINDNING, ROLL, VÄG, SCHEMA, TJÄNST, SYMMETRISK NYCKEL, ANVÄNDARE, XML-SCHEMASAMLING
ALAK ÄNDRA ASYMMETRISK NYCKEL DATABAS
ALAR ÄNDRA VILKEN PROGRAMROLL SOM HELST DATABAS
TYVÄRR ÄNDRA ALLA SAMMANSÄTTNINGAR DATABAS
ALCF ÄNDRA ALLA CERTIFIKAT DATABAS
ALDS ÄNDRA ALLA DATARYMDER DATABAS
ALED ÄNDRA EVENTUELLA DATABASHÄNDELSEMEDDELANDEN DATABAS
ALFT ÄNDRA ALLA FULLTEXTKATALOGER DATABAS
ALMT ÄNDRA VALFRI MEDDELANDETYP DATABAS
ALRL ÄNDRA VILKEN ROLL SOM HELST DATABAS
ALRT ÄNDRA VALFRI VÄG DATABAS
ALSB ÄNDRA ALLA FJÄRRTJÄNSTBINDNINGAR DATABAS
ALSC ÄNDRA ALLA KONTRAKT DATABAS
ALSK ÄNDRA EN SYMMETRISK NYCKEL DATABAS
ALSM ÄNDRA VALFRITT SCHEMA DATABAS
ALSV ÄNDRA ALLA TJÄNSTER DATABAS
ALTG ÄNDRA VALFRI DATABAS-DDL-UTLÖSARE DATABAS
ALUS ÄNDRA ALLA ANVÄNDARE DATABAS
AUTH STYRKA DATABAS
BADB SÄKERHETSKOPIERINGSDATABAS DATABAS
BALO SÄKERHETSKOPIERINGSLOGG DATABAS
CL KONTROLL PROGRAMROLL, SAMMANSÄTTNING, ASYMMETRISK NYCKEL, CERTIFIKAT, KONTRAKT, DATABAS, FULLTEXTKATALOG, MEDDELANDETYP, OBJEKT, FJÄRRTJÄNSTBINDNING, ROLL, VÄG, SCHEMA, TJÄNST, SYMMETRISK NYCKEL, TYP, ANVÄNDARE, XML-SCHEMASAMLING
CO ANSLUTA DATABAS
CORP ANSLUT REPLIKERING DATABAS
CP KONTROLLPUNKT DATABAS
CRAG SKAPA AGGREGERING DATABAS
CRAK SKAPA ASYMMETRISK NYCKEL DATABAS
CRAS SKAPA SAMMANSÄTTNING DATABAS
CRCF SKAPA CERTIFIKAT DATABAS
CRDB SKAPA DATABAS DATABAS
CRDF SKAPA STANDARD DATABAS
CRED SKAPA HÄNDELSEMEDDELANDE FÖR DATABAS-DDL DATABAS
CRFN SKAPA FUNKTION DATABAS
CRFT SKAPA FULLTEXTKATALOG DATABAS
CRMT SKAPA MEDDELANDETYP DATABAS
CRPR SKAPA PROCEDUR DATABAS
CRQU SKAPA KÖ DATABAS
CRRL SKAPA ROLL DATABAS
CRRT SKAPA VÄG DATABAS
CRRU SKAPA REGEL DATABAS
CRSB SKAPA FJÄRRTJÄNSTBINDNING DATABAS
CRSC SKAPA KONTRAKT DATABAS
CRSK SKAPA SYMMETRISK NYCKEL DATABAS
CRSM SKAPA SCHEMA DATABAS
CRSN SKAPA SYNONYM DATABAS
CRSO gäller för: SQL Server 2012 (11.x) och senare versioner.

SKAPA SEKVENS
DATABAS
CRSV SKAPA TJÄNST DATABAS
CRTB SKAPA TABELL DATABAS
CRTY SKAPA TYP DATABAS
CRVW SKAPA VY DATABAS
CRXS gäller för: SQL Server 2008 (10.0.x) och senare versioner.

SKAPA XML-SCHEMASAMLING
DATABAS
DABO ADMINISTRERA MASSÅTGÄRDER FÖR DATABASER DATABAS
DECILITER TA BORT DATABAS, OBJEKT, SCHEMA
EAES KÖRA ETT EXTERNT SKRIPT DATABAS
EX UTFÖRA SAMMANSÄTTNING, DATABAS, OBJEKT, SCHEMA, TYP, XML-SCHEMASAMLING
IM PERSONIFIERA ANVÄNDARE
I INFOGA DATABAS, OBJEKT, SCHEMA
RC MOTTAGA OBJEKT
RF REFERENSER SAMMANSÄTTNING, ASYMMETRISK NYCKEL, CERTIFIKAT, KONTRAKT, DATABAS, FULLTEXTKATALOG, MEDDELANDETYP, OBJEKT, SCHEMA, SYMMETRISK NYCKEL, TYP, XML-SCHEMASAMLING
SL UTVALD DATABAS, OBJEKT, SCHEMA
SN SÄNDA TJÄNST
SPLN SHOWPLAN DATABAS
SUQN PRENUMERERA PÅ FRÅGEMEDDELANDEN DATABAS
TILL TA ÄGARSKAP SAMMANSÄTTNING, ASYMMETRISK NYCKEL, CERTIFIKAT, KONTRAKT, DATABAS, FULLTEXTKATALOG, MEDDELANDETYP, OBJEKT, FJÄRRTJÄNSTBINDNING, ROLL, VÄG, SCHEMA, TJÄNST, SYMMETRISK NYCKEL, TYP, XML-SCHEMASAMLING
UPP UPPDATERA DATABAS, OBJEKT, SCHEMA
VW VISA DEFINITION PROGRAMROLL, SAMMANSÄTTNING, ASYMMETRISK NYCKEL, CERTIFIKAT, KONTRAKT, DATABAS, FULLTEXTKATALOG, MEDDELANDETYP, OBJEKT, FJÄRRTJÄNSTBINDNING, ROLL, VÄG, SCHEMA, TJÄNST, SYMMETRISK NYCKEL, TYP, ANVÄNDARE, XML-SCHEMASAMLING
VWCK VISA VALFRI KOLUMNKRYPTERINGSNYCKELDEFINITION DATABAS
VWCM VISA VALFRI KOLUMNHUVUDNYCKELDEFINITION DATABAS
VWCT VISA ÄNDRINGSSPÅRNING TABELL, SCHEMA
VWDS VISA DATABASTILLSTÅND DATABAS

Behörigheter för ÅTERKALLA och kolumn-undantag

I de flesta fall tar kommandot REVOKE bort posten GRANT eller DENY från sys.database_permissions.

Det är dock möjligt att bevilja eller neka behörigheter för ett objekt och sedan ÅTERKALLA behörigheten för en kolumn. Den här behörigheten för kolumnfel visas som ÅTERKALLA 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 en REVOKE (i kolumnen).

Viktig

ÅTERKALLA skiljer sig från NEKA eftersom Sales huvudnamn fortfarande kan ha åtkomst till kolumnen via andra behörigheter. Om vi hade nekat behörigheter i stället för att återkalla dem skulle Sales inte kunna visa innehållet i kolumnen eftersom DENY alltid ersätter GRANT.

Behörigheter

Alla användare kan se sina egna behörigheter. Om du vill se behörigheter för andra användare kräver DU VIEW DEFINITION, ALTER ANY USER eller någon behörighet för en användare. Om du vill se användardefinierade roller måste du ändra valfri roll eller medlemskap i rollen (till exempel 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.

Exempel

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.

Viktig

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;

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

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