sys.database_principals(Transact-SQL)sys.database_principals (Transact-SQL)

이 항목은 다음에 적용됩니다. 예SQL Server(2008부터)예Azure SQL Database예Azure SQL Data Warehouse 예병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

SQL ServerSQL Server 데이터베이스의 각 주체에 대해 행을 반환합니다.Returns a row for each security principal in a SQL ServerSQL Server database.

열 이름Column name 데이터 형식Data type DescriptionDescription
namename sysnamesysname 데이터베이스 내에서 고유한 보안 주체의 이름입니다.Name of principal, unique within the database.
principal_idprincipal_id intint 데이터베이스 내에서 고유한 보안 주체의 ID입니다.ID of principal, unique within the database.
유형type char(1)char(1) 보안 주체 유형입니다.Principal type:

A = 응용 프로그램 역할A = Application role

C = 인증서로 매핑된 사용자C = User mapped to a certificate

E = Azure Active Directory에서 외부 사용자E = External user from Azure Active Directory

G = Windows 그룹G = Windows group

K = 비대칭 키로 매핑된 사용자K = User mapped to an asymmetric key

R = 데이터베이스 역할R = Database role

S = SQL 사용자S = SQL user

U = Windows 사용자U = Windows user

X = Azure Active Directory 그룹 또는 응용 프로그램에서 외부 그룹X = External group from Azure Active Directory group or applications
type_desctype_desc nvarchar (60)nvarchar(60) 보안 주체 유형에 대한 설명입니다.Description of principal type.

APPLICATION_ROLEAPPLICATION_ROLE

CERTIFICATE_MAPPED_USERCERTIFICATE_MAPPED_USER

EXTERNAL_USEREXTERNAL_USER

WINDOWS_GROUPWINDOWS_GROUP

ASYMMETRIC_KEY_MAPPED_USERASYMMETRIC_KEY_MAPPED_USER

DATABASE_ROLEDATABASE_ROLE

SQL_USERSQL_USER

WINDOWS_USERWINDOWS_USER

EXTERNAL_GROUPSEXTERNAL_GROUPS
default_schema_namedefault_schema_name sysnamesysname SQL 이름이 스키마를 지정하지 않을 때 사용되는 이름입니다.Name to be used when SQL name does not specify a schema. S, U 또는 A 유형의 보안 주체의 경우 Null입니다.Null for principals not of type S, U, or A.
create_datecreate_date datetimedatetime 보안 주체가 생성된 시간입니다.Time at which the principal was created.
modify_datemodify_date datetimedatetime 보안 주체가 마지막으로 수정된 시간입니다.Time at which the principal was last modified.
owning_principal_idowning_principal_id intint 이 보안 주체를 소유하는 보안 주체의 ID입니다.ID of the principal that owns this principal. 데이터베이스 역할을 제외한 모든 보안 주체에서 소유 해야 dbo합니다.All principals except Database Roles must be owned by dbo.
sidsid varbinary(85)varbinary(85) 보안 주체의 SID(보안 식별자)입니다.SID (Security Identifier) of the principal. SYS 및 INFORMATION SCHEMAS의 경우 NULL입니다.NULL for SYS and INFORMATION SCHEMAS.
is_fixed_roleis_fixed_role bitbit 1 이면이 행은 고정된 데이터베이스 역할 중 하나에 대 한 항목: db_owner, db_accessadmin, db_datareader, db_datawriter, db_ddladmin, db_securityadmin, db_backupoperator, db_denydatareader, db_denydatawriter 합니다.If 1, this row represents an entry for one of the fixed database roles: db_owner, db_accessadmin, db_datareader, db_datawriter, db_ddladmin, db_securityadmin, db_backupoperator, db_denydatareader, db_denydatawriter.
authentication_typeauthentication_type intint 적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

인증 유형을 나타냅니다.Signifies authentication type. 가능한 값 및 해당 설명을 보려면은 다음과 같습니다.The following are the possible values and their descriptions.

0: 인증 안 함0 : No authentication
1: 인스턴스 인증1 : Instance authentication
2: 데이터베이스 인증2 : Database authentication
3: Windows 인증3 : Windows Authentication
authentication_type_descauthentication_type_desc nvarchar (60)nvarchar(60) 적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

인증 유형에 대한 설명입니다.Description of the authentication type. 가능한 값 및 해당 설명을 보려면은 다음과 같습니다.The following are the possible values and their descriptions.

NONE: 인증 없음NONE : No authentication
인스턴스 인증 인스턴스:INSTANCE : Instance authentication
데이터베이스 인증: 데이터베이스DATABASE : Database authentication
WINDOWS: Windows 인증WINDOWS : Windows Authentication
default_language_namedefault_language_name sysnamesysname 적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

이 보안 주체의 기본 언어를 나타냅니다.Signifies the default language for this principal.
default_language_lciddefault_language_lcid intint 적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

이 보안 주체의 기본 LCID를 나타냅니다.Signifies the default LCID for this principal.
allow_encrypted_value_modificationsallow_encrypted_value_modifications bitbit 적용 대상: SQL Server 2016SQL Server 2016 통해 SQL Server 2017SQL Server 2017, SQL 데이터베이스SQL Database합니다.Applies to: SQL Server 2016SQL Server 2016 through SQL Server 2017SQL Server 2017, SQL 데이터베이스SQL Database.

대량 복사 작업에서 서버에 대 한 암호화 메타 데이터 검사를 표시 하지 않습니다.Suppresses cryptographic metadata checks on the server in bulk copy operations. 데이터를 대량 복사를 사용 하 여 상시 암호화, 테이블 또는 데이터베이스 간에 데이터를 해독 하지 않고 암호화 된 사용자 수 있습니다.This enables the user to bulk copy data encrypted using Always Encrypted, between tables or databases, without decrypting the data. 기본값은 OFF입니다.The default is OFF.

주의Remarks

PasswordLastSetTime 속성은 SQL Server의 지원 되는 모든 구성에서 사용할 수 있지만 SQL Server는 Windows Server 2003 이상 및 CHECK_POLICY 및 모두 CHECK_에서 실행 되는 다른 속성은만 사용할 수 만료 활성화 됩니다.The PasswordLastSetTime properties are available on all supported configurations of SQL Server, but the other properties are only available when SQL Server is running on Windows Server 2003 or later and both CHECK_POLICY and CHECK_EXPIRATION are enabled. 참조 암호 정책 자세한 정보에 대 한 합니다.See Password Policy for more information.

PermissionsPermissions

모든 사용자는 자신의 사용자 이름, 시스템 사용자 및 고정 데이터베이스 역할을 볼 수 있습니다.Any user can see their own user name, the system users, and the fixed database roles. 다른 사용자를 보려면 사용자에 대한 ALTER ANY USER 또는 사용 권한이 필요합니다.To see other users, requires ALTER ANY USER, or a permission on the user. 사용자 정의 역할을 보려면 ALTER ANY ROLE 또는 역할의 멤버 자격이 필요합니다.To see user-defined roles, requires ALTER ANY ROLE, or membership in the role.

Examples

A: 데이터베이스 보안 주체의 모든 사용 권한 나열A: Listing all the permissions of database principals

다음 쿼리는 데이터베이스 보안 주체에 대해 명시적으로 부여되거나 거부된 사용 권한을 나열합니다.The following query lists the permissions explicitly granted or denied to database principals.

중요

고정 데이터베이스 역할의 사용 권한은 sys.database_permissions에 나타나지 않습니다.The permissions of fixed database roles do not appear in sys.database_permissions. 따라서 데이터베이스 보안 주체가 여기에 나열되지 않은 추가 사용 권한을 가질 수 있습니다.Therefore, database principals may have additional permissions not listed here.

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:에는 데이터베이스 내의 스키마 개체에 사용 권한 나열B: Listing permissions on schema objects within a database

다음 쿼리는 sys.database_principals 및 sys.database_permissions를 sys.objects 및 sys.schemas에 조인하여 특정 스키마 개체에 부여되거나 거부된 사용 권한을 나열합니다.The following query joins sys.database_principals and sys.database_permissions to sys.objects and sys.schemas to list permissions granted or denied to specific schema objects.

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;  

예: Azure SQL 데이터 웨어하우스Azure SQL Data Warehouse병렬 데이터 웨어하우스Parallel Data WarehouseExamples: Azure SQL 데이터 웨어하우스Azure SQL Data Warehouse and 병렬 데이터 웨어하우스Parallel Data Warehouse

C: 데이터베이스 보안 주체의 모든 사용 권한 나열C: Listing all the permissions of database principals

다음 쿼리는 데이터베이스 보안 주체에 대해 명시적으로 부여되거나 거부된 사용 권한을 나열합니다.The following query lists the permissions explicitly granted or denied to database principals.

중요

고정된 데이터베이스 역할의 사용 권한을에 표시 되지 않습니다 sys.database_permissions합니다.The permissions of fixed database roles do not appear in sys.database_permissions. 따라서 데이터베이스 보안 주체가 여기에 나열되지 않은 추가 사용 권한을 가질 수 있습니다.Therefore, database principals may have additional permissions not listed here.

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:에는 데이터베이스 내의 스키마 개체에 사용 권한 나열D: Listing permissions on schema objects within a database

다음 쿼리는 조인은 sys.database_principalssys.database_permissionssys.objectssys.schemas 목록 사용 권한을 특정 스키마 개체에 부여 하거나 거부 합니다.The following query joins sys.database_principals and sys.database_permissions to sys.objects and sys.schemas to list permissions granted or denied to specific schema objects.

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

보안 주체(데이터베이스 엔진) Principals (Database Engine)
sys.server_principals(Transact-SQL) sys.server_principals (Transact-SQL)
보안 카탈로그 뷰(Transact-SQL) Security Catalog Views (Transact-SQL)
포함 된 데이터베이스 사용자-휴대용 데이터베이스 만들기 Contained Database Users - Making Your Database Portable
Azure Active Directory 인증을 사용하여 SQL 데이터베이스에 연결Connecting to SQL Database By Using Azure Active Directory Authentication