Dela via


sys.database_principals (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 säkerhetsobjekt i en SQL Server-databas.

Note

Microsoft Entra-ID kallades tidigare Azure Active Directory (Azure AD).

Column descriptions

Column name Data type Description
name sysname Namn på huvudnamn, unikt i databasen.
principal_id int ID för huvudkontot, unikt i databasen.
type char(1) Principal type:

A = Programroll

C = Användare mappad till ett certifikat

E = Extern användare från Microsoft Entra-ID

G = Windows-grupp

K = Användare mappad till en asymmetrisk nyckel

R = databasroll

S = SQL-användare

U = Windows-användare

X = Extern grupp från Microsoft Entra-grupp eller -program
type_desc nvarchar(60) Beskrivning av huvudtyp.

APPLICATION_ROLE

CERTIFICATE_MAPPED_USER

EXTERNAL_USER

WINDOWS_GROUP

ASYMMETRIC_KEY_MAPPED_USER

DATABASE_ROLE

SQL_USER

WINDOWS_USER

EXTERNAL_GROUPS
default_schema_name sysname Namn som ska användas när SQL-namnet inte anger något schema. Null för huvudkonton som inte är av typen S, U eller A.
create_date datetime Tidpunkt då huvudkontot skapades.
modify_date datetime Tidpunkt då huvudkontot senast ändrades.
owning_principal_id int ID för det huvudnamn som äger det här huvudkontot. Alla fasta databasroller ägs av dbo som standard.
sid varbinary(85) SID (säkerhetsidentifierare) för huvudkontot. NULL för SYS och INFORMATION SCHEMAN.
is_fixed_role bit Om 1 representerar den här raden en post för en av de fasta databasrollerna: db_owner, db_accessadmin, db_datareader, db_datawriter, db_ddladmin, db_securityadmin, db_backupoperator, db_denydatareader, db_denydatawriter.
authentication_type int gäller för: SQL Server 2012 (11.x) och senare.

Betyder autentiseringstyp. Följande är möjliga värden och deras beskrivningar.

0 : Ingen autentisering
1: Instansautentisering
2 : Databasautentisering
3: Windows-autentisering
4: Microsoft Entra-autentisering
authentication_type_desc nvarchar(60) gäller för: SQL Server 2012 (11.x) och senare.

Beskrivning av autentiseringstypen. Följande är möjliga värden och deras beskrivningar.

NONE : Ingen autentisering
INSTANCE : Instansautentisering
DATABASE : Databasautentisering
WINDOWS : Windows-autentisering
EXTERNAL: Microsoft Entra-autentisering
default_language_name sysname gäller för: SQL Server 2012 (11.x) och senare.

Betyder standardspråket för det här huvudkontot.
default_language_lcid int gäller för: SQL Server 2012 (11.x) och senare.

Betyder standard-LCID för det här huvudkontot.
allow_encrypted_value_modifications bit gäller för: SQL Server 2016 (13.x) och senare SQL Database.

Undertrycker kryptografiska metadatakontroller på servern i masskopieringsåtgärder. På så sätt kan användaren masskopiera data som krypterats med Always Encrypted, mellan tabeller eller databaser, utan att dekryptera data. Standardvärdet är AV.

Remarks

Egenskaperna PasswordLastSetTime är tillgängliga i alla konfigurationer som stöds av SQL Server, men de andra egenskaperna är bara tillgängliga när SQL Server körs på Windows Server 2003 eller senare och både CHECK_POLICY och CHECK_EXPIRATION är aktiverade. Mer information finns i Lösenordsprincip . Värdena för principal_id kan återanvändas om huvudkontona har tagits bort och därför inte garanteras öka ständigt.

Permissions

Alla användare kan se sitt eget användarnamn, systemanvändarna och de fasta databasrollerna. Om du vill se andra användare kräver du ALTER ANY USER eller en behörighet för användaren. Om du vill se användardefinierade roller måste du ändra valfri roll eller medlemskap i rollen.

Examples

S: Lista alla behörigheter för databashuvudnamn

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  
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  
JOIN sys.database_permissions AS pe  
    ON pe.grantee_principal_id = pr.principal_id  
JOIN sys.objects AS o  
    ON pe.major_id = o.object_id  
JOIN sys.schemas AS s  
    ON o.schema_id = s.schema_id;  

Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)

C: Lista alla behörigheter för databashuvudnamn

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  
JOIN sys.database_permissions AS pe  
    ON pe.grantee_principal_id = pr.principal_id;  

D: Visa behörigheter för schemaobjekt i en databas

Följande fråga ansluter och sys.database_permissions till sys.objects och sys.schemas för att visa behörigheter som beviljats sys.database_principals 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  
JOIN sys.database_permissions AS pe  
    ON pe.grantee_principal_id = pr.principal_id  
JOIN sys.objects AS o  
    ON pe.major_id = o.object_id  
JOIN sys.schemas AS s  
    ON o.schema_id = s.schema_id;  

See Also

huvudnamn (databasmotor)
sys.server_principals (Transact-SQL)
säkerhetskatalogvyer (Transact-SQL)
Oberoende databasanvändare – göra databasen portabel
Ansluta till Azure SQL med Microsoft Entra-autentisering