다음 표에는 고정 데이터베이스 역할과 해당 기능이 나와 있습니다.이러한 역할은 모든 데이터베이스에 존재합니다.공용데이터베이스 역할을 제외하고고정 데이터베이스 역할에 할당된 권한은 변경할 수 없습니다.
db_owner
db_owner고정 데이터베이스 역할 의 멤버는데이터베이스에 대한 모든 구성 및 유지 관리 활동을 수행할 수 있으며dropSQL Server의 데이터베이스에 대해서도 수행할 수 있습니다. (SQL Database 및 Azure Synapse에서 일부 유지 관리 활동에는 서버 수준 권한이 필요하며 db_owners에서 수행할 수 없습니다.)
db_securityadmin
db_securityadmin고정 데이터베이스 역할 의 멤버는사용자 지정 역할에 대해서만 역할 멤버십을 수정하고 권한을 관리할 수 있습니다. 이 역할의 구성원은 잠재적으로 자신의 권한을 높일 수 있으므로 해당 구성원의 작업을 모니터링해야 합니다.
db_accessadmin
db_accessadmin고정 데이터베이스 역할 의 멤버는Windows 로그인, Windows 그룹 및 SQL Server 로그인에 대해 데이터베이스에 대한 액세스를 추가하거나 제거할 수 있습니다.
db_backupoperator
db_backupoperator고정 데이터베이스 역할 의 멤버는 데이터베이스를 백업할 수 있습니다.
db_ddladmin
db_ddladmin고정 데이터베이스 역할 의 멤버는데이터베이스에서 모든 DDL(데이터 정의 언어) 명령을 실행할 수 있습니다. 이 역할의 구성원은 높은 권한으로 실행될 수 있는 코드를 조작하여 잠재적으로 자신의 권한을 높일 수 있으며 이들의 작업을 모니터링해야 합니다.
db_datawriter
db_datawriter고정 데이터베이스 역할 의 멤버는 모든 사용자 테이블의 데이터를 추가, 삭제 또는 변경할 수 있습니다. 대부분의 사용 사례에서 이 역할은 수정될 데이터를 읽을 수 있도록db_datareader멤버십 과 결합됩니다 .
db_datareader
db_datareader고정 데이터베이스 역할 의 멤버는 모든 사용자 테이블 및 뷰에서 모든 데이터를 읽을 수 있습니다. 사용자 개체는 sys및INFORMATION_SCHEMA 를제외한 모든 스키마에 존재할 수 있습니다.
db_denydatawriter
db_denydatawriter고정 데이터베이스 역할 의 멤버는 데이터베이스 내의 사용자 테이블에 있는 데이터를 추가, 수정 또는 삭제할 수 없습니다.
db_denydatareader
db_denydatareader고정 데이터베이스 역할 의 멤버는 데이터베이스 내의 사용자 테이블 및 뷰에서 데이터를 읽을 수 없습니다.
고정 데이터베이스 역할에 할당된 권한은 변경할 수 없습니다.다음 그림은 고정 데이터베이스 역할에 할당된 권한을 보여줍니다.
예제에서는 데이터베이스 LEVEL ROLE 로 작업하는 방법을 보여 줍니다.
//데이터베이스 LEVEL ROLE 사용자 추가하기
ALTER ROLE db_datareader
ADD MEMBER Ben;
GO
//데이터베이스 LEVEL ROLE 의 구성원인 모든 데이터베이스 주체를 전부 확인하기
SELECT roles.principal_id AS RolePrincipalID
, roles.name AS RolePrincipalName
, database_role_members.member_principal_id AS MemberPrincipalID
, members.name AS MemberPrincipalName
FROM sys.database_role_members AS database_role_members
JOIN sys.database_principals AS roles
ON database_role_members.role_principal_id = roles.principal_id
JOIN sys.database_principals AS members
ON database_role_members.member_principal_id = members.principal_id;
GO