다음을 통해 공유


sp_addrolemember(Transact-SQL)

현재 데이터베이스의 데이터베이스 역할에 데이터베이스 사용자, 데이터베이스 역할, Windows 로그인 또는 Windows 그룹을 추가합니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

sp_addrolemember [@rolename=] 'role',
    [ @membername=] 'security_account'

인수

  • [ @rolename = ] 'role'
    현재 데이터베이스의 데이터베이스 역할 이름입니다. role은 sysname이며 기본값은 없습니다.

  • [ @membername = ] 'security_account'
    역할에 추가될 보안 계정입니다. security_account는 sysname이며 기본값은 없습니다. security_account는 데이터베이스 사용자, 데이터베이스 역할, Windows 로그인 또는 Windows 그룹이 될 수 있습니다.

반환 코드 값

0(성공) 또는 1(실패)

주의

sp_addrolemember를 사용하여 역할에 추가된 멤버는 해당 역할의 사용 권한을 상속합니다. 새 멤버가 해당 데이터베이스 사용자가 없는 Windows 수준의 보안 주체인 경우에는 데이터베이스 사용자가 생성되지만 로그인에 완전히 매핑되지 않을 수 있습니다. 로그인이 있고 데이터베이스에 액세스할 수 있는지 항상 확인하십시오.

역할은 자신의 역할 자체를 멤버로 포함할 수 없습니다. 이와 같은 "순환" 정의는 하나 이상의 중간 멤버 자격을 통해 멤버 자격이 간접적으로 유추되는 경우에도 유효하지 않습니다.

sp_addrolemember는 역할에 고정 데이터베이스 역할, 고정 서버 역할 또는 dbo를 추가할 수 없습니다. 사용자 정의 트랜잭션 내에서는 sp_addrolemember를 실행할 수 없습니다.

데이터베이스 역할에 멤버를 추가할 경우에만 sp_addrolemember를 사용하십시오. 서버 역할에 멤버를 추가하려면 sp_addsrvrolemember(Transact-SQL)를 사용합니다.

사용 권한

멤버를 유연한 데이터베이스 역할에 추가하려면 다음 항목 중 하나가 필요합니다.

  • db_owner 고정 데이터베이스 역할의 멤버 자격

  • db_securityadmin 고정 데이터베이스 역할의 멤버 자격

  • 역할을 소유하는 역할의 멤버 자격

  • 해당 역할에 대한 ALTER 권한

고정 데이터베이스 역할에 멤버를 추가하려면 db_owner 고정 데이터베이스 역할의 멤버 자격이 필요합니다.

1. Windows 로그인 추가

다음 예에서는 Windows 로그인 Contoso\Mary5를 AdventureWorks 데이터베이스에 Mary5 사용자로 추가합니다. 그런 다음 Mary5 사용자를 Production 역할에 추가합니다.

[!참고]

Contoso\Mary5는 AdventureWorks 데이터베이스에서 Mary5 데이터베이스 사용자로 알려져 있기 때문에 Mary5 사용자 이름을 지정해야 합니다. Contoso\Mary5라는 로그인이 없으면 문이 실패합니다. 사용자 도메인의 로그인을 사용하여 테스트하십시오.

USE AdventureWorks
GO
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5] ;
GO
EXEC sp_addrolemember 'Production', 'Mary5'

2. 데이터베이스 사용자 추가

다음 예에서는 Mary5 데이터베이스 사용자를 현재 데이터베이스의 Production 데이터베이스 역할에 추가합니다.

EXEC sp_addrolemember 'Production', 'Mary5'