Udostępnij za pomocą


sys.database_principals (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Zwraca wiersz dla każdego podmiotu zabezpieczeń w bazie danych programu SQL Server.

Note

Microsoft Entra ID był wcześniej znany jako Azure Active Directory (Azure AD).

Opisy kolumn

Nazwa kolumny Typ danych Description
name sysname Nazwa podmiotu zabezpieczeń, unikatowa w bazie danych.
principal_id int Identyfikator podmiotu zabezpieczeń, unikatowy w bazie danych.
type char(1) Typ podmiotu zabezpieczeń:

A = Rola aplikacji

C = Użytkownik zamapowany na certyfikat

E = użytkownik zewnętrzny z identyfikatora Entra firmy Microsoft

G = grupa systemu Windows

K = Użytkownik zamapowany na klucz asymetryczny

R = rola bazy danych

S = użytkownik SQL

U = użytkownik systemu Windows

X = grupa zewnętrzna z grupy lub aplikacji firmy Microsoft Entra
type_desc nvarchar(60) Opis typu podmiotu zabezpieczeń.

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 Nazwa, która ma być używana, gdy nazwa SQL nie określa schematu. Wartość null dla podmiotów zabezpieczeń, które nie mają typu S, U lub A.
create_date datetime Godzina utworzenia podmiotu zabezpieczeń.
modify_date datetime Czas ostatniej modyfikacji podmiotu zabezpieczeń.
owning_principal_id int Identyfikator podmiotu zabezpieczeń, który jest właścicielem tego podmiotu zabezpieczeń. Wszystkie stałe role bazy danych są domyślnie własnością dbo .
Sid varbinary(85) Identyfikator SID (identyfikator zabezpieczeń) podmiotu zabezpieczeń. WARTOŚĆ NULL dla SCHEMATÓW SYS i INFORMATION.
is_fixed_role bit Jeśli 1, ten wiersz reprezentuje wpis dla jednej ze stałych ról bazy danych: db_owner, db_accessadmin, db_datareader, db_datawriter, db_ddladmin, db_securityadmin, db_backupoperator, db_denydatareader, db_denydatawriter.
authentication_type int Dotyczy: SQL Server 2012 (11.x) i nowsze.

Oznacza typ uwierzytelniania. Poniżej przedstawiono możliwe wartości i ich opisy.

0: Brak uwierzytelniania
1: Uwierzytelnianie wystąpienia
2: Uwierzytelnianie bazy danych
3: Uwierzytelnianie systemu Windows
4: Uwierzytelnianie firmy Microsoft Entra
authentication_type_desc nvarchar(60) Dotyczy: SQL Server 2012 (11.x) i nowsze.

Opis typu uwierzytelniania. Poniżej przedstawiono możliwe wartości i ich opisy.

NONE : Brak uwierzytelniania
INSTANCE : Uwierzytelnianie wystąpienia
DATABASE : Uwierzytelnianie bazy danych
WINDOWS : Uwierzytelnianie systemu Windows
EXTERNAL: Uwierzytelnianie firmy Microsoft Entra
default_language_name sysname Dotyczy: SQL Server 2012 (11.x) i nowsze.

Oznacza domyślny język dla tego podmiotu zabezpieczeń.
default_language_lcid int Dotyczy: SQL Server 2012 (11.x) i nowsze.

Oznacza domyślny identyfikator LCID dla tego podmiotu zabezpieczeń.
allow_encrypted_value_modifications bit Dotyczy: SQL Server 2016 (13.x) i nowszych, SQL Database.

Pomija sprawdzanie metadanych kryptograficznych na serwerze w operacjach kopiowania zbiorczego. Dzięki temu użytkownik może zbiorczo kopiować dane zaszyfrowane przy użyciu funkcji Always Encrypted między tabelami lub bazami danych bez odszyfrowywania danych. Wartość domyślna to WYŁĄCZONE.

Remarks

Właściwości PasswordLastSetTime są dostępne we wszystkich obsługiwanych konfiguracjach programu SQL Server, ale inne właściwości są dostępne tylko wtedy, gdy program SQL Server jest uruchomiony w systemie Windows Server 2003 lub nowszym, a zarówno CHECK_POLICY, jak i CHECK_EXPIRATION są włączone. Aby uzyskać więcej informacji, zobacz Zasady haseł . Wartości principal_id mogą być ponownie używane w przypadku, gdy podmioty zabezpieczeń zostały odrzucone i dlatego nie ma gwarancji, że stale rośnie.

Permissions

Każdy użytkownik może zobaczyć własną nazwę użytkownika, użytkowników systemu i stałe role bazy danych. Aby wyświetlić innych użytkowników, wymaga ZMIANY DOWOLNEGO UŻYTKOWNIKA lub uprawnienia użytkownika. Aby wyświetlić role zdefiniowane przez użytkownika, wymaga ZMIANY DOWOLNEJ ROLI lub członkostwa w roli.

Examples

1: Wyświetlanie listy wszystkich uprawnień podmiotów zabezpieczeń bazy danych

Poniższe zapytanie zawiera listę uprawnień jawnie udzielonych lub odrzuconych podmiotom zabezpieczeń bazy danych.

Important

Uprawnienia stałych ról bazy danych nie są wyświetlane w sys.database_permissions. W związku z tym podmioty zabezpieczeń bazy danych mogą mieć dodatkowe uprawnienia, które nie są wymienione tutaj.

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: Wyświetlanie listy uprawnień do obiektów schematu w bazie danych

Następujące zapytanie łączy sys.database_principals i sys.database_permissions do obiektów sys.objects i sys.schemas w celu wyświetlenia listy uprawnień przyznanych lub odrzuconych do określonych obiektów schematu.

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;  

Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)

C: Wyświetlanie listy wszystkich uprawnień podmiotów zabezpieczeń bazy danych

Poniższe zapytanie zawiera listę uprawnień jawnie udzielonych lub odrzuconych podmiotom zabezpieczeń bazy danych.

Important

Uprawnienia stałych ról bazy danych nie są wyświetlane w sys.database_permissions. W związku z tym podmioty zabezpieczeń bazy danych mogą mieć dodatkowe uprawnienia, które nie są wymienione tutaj.

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: Wyświetlanie listy uprawnień do obiektów schematu w bazie danych

Poniższe zapytanie łączy sys.database_principals i do sys.database_permissions i sys.objectssys.schemas do listy uprawnień przyznanych lub odrzuconych do określonych obiektów schematu.

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;  

Zobacz też

Podmioty (aparat bazy danych)
sys.server_principals (Transact-SQL)
Widoki wykazu zabezpieczeń (Transact-SQL)
Użytkownicy zawartej bazy danych — tworzenie przenośnej bazy danych
Nawiązywanie połączenia z usługą Azure SQL przy użyciu uwierzytelniania entra firmy Microsoft