Dela via


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 Förhandsversion av 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.

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

SÖK EGENSKAPSLISTA

DATABASOMFÅNGSBEGRÄNSADE AUTENTISERINGSUPPGIFTER

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

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

Database Permissions

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

Permission type Permission name Gäller för skyddsbara
AADS ÄNDRA EN DATABASHÄNDELSESESSION DATABASE
AAMK ÄNDRA VALFRI MASK DATABASE
AEDS ÄNDRA ALLA EXTERNA DATAKÄLLOR DATABASE
AEFF ÄNDRA VALFRITT EXTERNT FILFORMAT DATABASE
AL ALTER 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 DATABASE
ALAR ÄNDRA VILKEN PROGRAMROLL SOM HELST DATABASE
ALAS ÄNDRA ALLA SAMMANSÄTTNINGAR DATABASE
ALCF ÄNDRA ALLA CERTIFIKAT DATABASE
ALDS ÄNDRA ALLA DATARYMDER DATABASE
ALED ÄNDRA EVENTUELLA DATABASHÄNDELSEMEDDELANDEN DATABASE
ALFT ÄNDRA ALLA FULLTEXTKATALOGER DATABASE
ALMT ÄNDRA VALFRI MEDDELANDETYP DATABASE
ALRL ÄNDRA VILKEN ROLL SOM HELST DATABASE
ALRT ÄNDRA VALFRI VÄG DATABASE
ALSB ÄNDRA ALLA FJÄRRTJÄNSTBINDNINGAR DATABASE
ALSC ÄNDRA ALLA KONTRAKT DATABASE
ALSK ÄNDRA EN SYMMETRISK NYCKEL DATABASE
ALSM ÄNDRA VALFRITT SCHEMA DATABASE
ALSV ÄNDRA ALLA TJÄNSTER DATABASE
ALTG ÄNDRA VALFRI DATABAS-DDL-UTLÖSARE DATABASE
ALUS ÄNDRA ALLA ANVÄNDARE DATABASE
AUTH AUTHENTICATE DATABASE
BADB BACKUP DATABASE DATABASE
BALO BACKUP LOG DATABASE
CL CONTROL 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 CONNECT DATABASE
CORP CONNECT REPLICATION DATABASE
CP CHECKPOINT DATABASE
CRAG CREATE AGGREGATE DATABASE
CRAK SKAPA ASYMMETRISK NYCKEL DATABASE
CRAS CREATE ASSEMBLY DATABASE
CRCF CREATE CERTIFICATE DATABASE
CRDB CREATE DATABASE DATABASE
CRDF CREATE DEFAULT DATABASE
CRED SKAPA HÄNDELSEMEDDELANDE FÖR DATABAS-DDL DATABASE
CRFN CREATE FUNCTION DATABASE
CRFT SKAPA FULLTEXTKATALOG DATABASE
CRMT SKAPA MEDDELANDETYP DATABASE
CRPR CREATE PROCEDURE DATABASE
CRQU CREATE QUEUE DATABASE
CRRL CREATE ROLE DATABASE
CRRT CREATE ROUTE DATABASE
CRRU CREATE RULE DATABASE
CRSB SKAPA FJÄRRTJÄNSTBINDNING DATABASE
CRSC CREATE CONTRACT DATABASE
CRSK SKAPA SYMMETRISK NYCKEL 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.

SKAPA XML-SCHEMASAMLING
DATABASE
DABO ADMINISTRERA MASSÅTGÄRDER FÖR DATABASER DATABASE
DL DELETE DATABAS, OBJEKT, SCHEMA
EAES KÖRA ETT EXTERNT SKRIPT DATABASE
EX EXECUTE SAMMANSÄTTNING, DATABAS, OBJEKT, SCHEMA, TYP, XML-SCHEMASAMLING
IM IMPERSONATE USER
IN INSERT DATABAS, OBJEKT, SCHEMA
RC RECEIVE OBJECT
RF REFERENCES SAMMANSÄTTNING, ASYMMETRISK NYCKEL, CERTIFIKAT, KONTRAKT, DATABAS, FULLTEXTKATALOG, MEDDELANDETYP, OBJEKT, SCHEMA, SYMMETRISK NYCKEL, TYP, XML-SCHEMASAMLING
SL SELECT DATABAS, OBJEKT, SCHEMA
SN SEND SERVICE
SPLN SHOWPLAN DATABASE
SUQN PRENUMERERA PÅ FRÅGEMEDDELANDEN DATABASE
TO TAKE OWNERSHIP SAMMANSÄTTNING, ASYMMETRISK NYCKEL, CERTIFIKAT, KONTRAKT, DATABAS, FULLTEXTKATALOG, MEDDELANDETYP, OBJEKT, FJÄRRTJÄNSTBINDNING, ROLL, VÄG, SCHEMA, TJÄNST, SYMMETRISK NYCKEL, TYP, XML-SCHEMASAMLING
UP UPDATE DATABAS, OBJEKT, SCHEMA
VW VIEW 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 DATABASE
VWCM VISA VALFRI KOLUMNHUVUDNYCKELDEFINITION DATABASE
VWCT VISA ÄNDRINGSSPÅRNING TABLE, SCHEMA
VWDS VISA DATABASTILLSTÅND DATABASE

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

Important

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

Permissions

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.

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;

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

See also

Next steps