ALTER AUTHORIZATION(Transact-SQL)
보안 개체의 소유권을 변경합니다.
구문
ALTER AUTHORIZATION
ON [ <class_type>] entity_name
TO { SCHEMA OWNER | principal_name }
<class_type> ::=
{
OBJECT | ASSEMBLY | ASYMMETRIC KEY | CERTIFICATE
| CONTRACT | TYPE | DATABASE | ENDPOINT | FULLTEXT CATALOG
| FULLTEXT STOPLIST | MESSAGE TYPE | REMOTE SERVICE BINDING
| ROLE | ROUTE | SCHEMA | SERVICE | SYMMETRIC KEY
| XML SCHEMA COLLECTION
}
인수
<class_type>
소유자가 변경될 엔터티의 보안 개체 클래스입니다. OBJECT가 기본값입니다.entity_name
엔터티의 이름입니다.principal_name
엔터티를 소유하게 될 보안 주체의 이름입니다.
주의
ALTER AUTHORIZATION을 사용하면 소유자가 있는 엔터티의 소유권을 변경할 수 있습니다. 데이터베이스 수준 엔터티의 소유권은 데이터베이스 수준의 모든 보안 주체에게 이전할 수 있습니다. 서버 수준 엔터티의 소유권은 서버 수준 보안 주체에게만 이전할 수 있습니다.
![]() |
---|
SQL Server 2005부터 사용자는 다른 데이터베이스 사용자가 소유한 스키마에 포함된 OBJECT 또는 TYPE을 소유할 수 있습니다. 이 동작은 이전 버전의 SQL Server에서 변경되었습니다. 자세한 내용은 사용자와 스키마 분리, OBJECTPROPERTY(Transact-SQL) 및 TYPEPROPERTY(Transact-SQL)를 참조하십시오. |
"object" 형식의 스키마 수준 엔터티인 테이블, 뷰, 함수, 프로시저, 큐 및 동의어 엔터티의 소유권은 이전할 수 있습니다.
연결된 서버, 통계, 제약 조건, 규칙, 기본값, 트리거, Service Broker 큐, 자격 증명, 파티션 함수, 파티션 구성표, 데이터베이스 마스터 키, 서비스 마스터 키 및 이벤트 알림 엔터티의 소유권은 이전할 수 없습니다.
서버, 로그인, 사용자, 응용 프로그램 역할 및 열 보안 개체 클래스의 멤버 소유권은 이전할 수 없습니다.
SCHEMA OWNER 옵션은 스키마 수준 엔터티의 소유권을 이전하는 경우에만 유효합니다. SCHEMA OWNER는 엔터티의 소유권을 엔터티가 속한 스키마의 소유자에게 이전합니다. 스키마 수준 엔터티는 OBJECT, TYPE 또는 XML SCHEMA COLLECTION 클래스뿐입니다.
대상 엔터티가 데이터베이스가 아니고 엔터티가 새 소유자에게 이전되는 경우 대상에 대한 모든 사용 권한이 삭제됩니다.
![]() |
---|
SQL Server 2005에서는 스키마 동작이 이전 버전의 SQL Server와 다르게 변경되었습니다. 스키마가 데이터베이스 사용자와 같다고 가정하는 코드에서 올바른 결과가 반환되지 않을 수도 있습니다. sysobjects를 비롯한 이전 카탈로그 뷰는 CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION 등의 DDL 문이 사용된 데이터베이스에서 사용하지 않아야 합니다. 이러한 문이 사용된 데이터베이스에서는 새 카탈로그 뷰를 사용해야 합니다. 새 카탈로그 뷰는 SQL Server 2005에서 도입된 보안 주체와 스키마 분리를 고려합니다. 카탈로그 뷰에 대한 자세한 내용은 카탈로그 뷰(Transact-SQL)를 참조하십시오. |
다음 사항도 유의해야 합니다.
![]() |
---|
개체의 소유자를 확인하는 신뢰할 수 있는 유일한 방법은 sys.objects 카탈로그 뷰를 쿼리하는 것입니다. 형식의 소유자를 확인하는 신뢰할 수 있는 유일한 방법은 TYPEPROPERTY 함수를 사용하는 것입니다. |
특수 상황과 상태
다음 표에서는 인증 변경에 적용되는 특수 상황, 예외 및 상태를 보여 줍니다.
클래스 |
상태 |
---|---|
DATABASE |
master, model 및 tempdb 시스템 데이터베이스, 리소스 데이터베이스 또는 배포 데이터베이스로 사용되는 데이터베이스의 소유자는 변경할 수 없습니다. 보안 주체는 로그인이어야 합니다. 보안 주체가 해당 SQL Server 로그인이 없는 Windows 로그인이라면 보안 주체에게 데이터베이스에 대한 CONTROL SERVER 권한과 TAKE OWNERSHIP 권한이 있어야 합니다. 보안 주체가 SQL Server 로그인이라면 보안 주체를 인증서나 비대칭 키에 매핑할 수 없습니다. 종속 별칭은 새 데이터베이스 소유자에게 매핑됩니다. DBO SID는 현재 데이터베이스와 sys.databases에서 모두 업데이트됩니다. |
OBJECT |
트리거, 제약 조건, 규칙, 기본값, 통계, 시스템 개체, 큐, 인덱싱된 뷰 또는 인덱싱된 뷰가 있는 테이블의 소유권을 변경할 수 없습니다. |
SCHEMA |
소유권이 이전될 때 명시적 소유자가 없는 스키마 수준 개체에 대한 권한이 삭제됩니다. sys, dbo 또는 information_schema의 소유자를 변경할 수 없습니다. |
TYPE |
sys 또는 information_schema에 속하는 TYPE의 소유권을 변경할 수 없습니다. |
CONTRACT, MESSAGE TYPE 또는 SERVICE |
시스템 엔터티의 소유권을 변경할 수 없습니다. |
SYMMETRIC KEY |
전역 임시 키의 소유권을 변경할 수 없습니다. |
CERTIFICATE 또는 ASYMMETRIC KEY |
이러한 엔터티의 소유권을 역할이나 그룹에 이전할 수 없습니다. |
ENDPOINT |
보안 주체는 로그인이어야 합니다. |
사용 권한
엔터티에 대한 TAKE OWNERSHIP 권한이 필요합니다. 새 소유자가 이 문을 실행하는 사용자가 아니면 1) 새 소유자가 사용자이거나 로그인인 경우 새 소유자에 대한 IMPERSONATE 권한, 2) 새 소유자가 역할인 경우 역할의 멤버 자격이나 역할에 대한 ALTER 권한 또는 3) 새 소유자가 응용 프로그램 역할인 경우 응용 프로그램 역할에 대한 ALTER 권한도 필요합니다.
예
1. 테이블의 소유권 이전
다음 예에서는 Sprockets 테이블의 소유권을 MichikoOsada 사용자에게 이전합니다. 테이블은 Parts 스키마 내부에 있습니다.
ALTER AUTHORIZATION ON OBJECT::Parts.Sprockets TO MichikoOsada;
GO
쿼리가 다음과 같을 수도 있습니다.
ALTER AUTHORIZATION ON Parts.Sprockets TO MichikoOsada;
GO
2. 뷰 소유권을 스키마 소유자에게 이전
다음 예에서는 ProductionView06 뷰의 소유권을 뷰가 포함된 스키마의 소유자에게 이전합니다. 뷰는 Production 스키마 내부에 있습니다.
ALTER AUTHORIZATION ON OBJECT::Production.ProductionView06 TO SCHEMA OWNER;
GO
3. 스키마의 소유권을 사용자에게 이전
다음 예에서는 SeattleProduction11 스키마의 소유권을 SandraAlayo 사용자에게 이전합니다.
ALTER AUTHORIZATION ON SCHEMA::SeattleProduction11 TO SandraAlayo;
GO
4. 끝점의 소유권을 SQL Server 로그인에게 이전
다음 예에서는 CantabSalesServer1 끝점의 소유권을 JaePak에게 이전합니다. 끝점은 서버 수준의 보안 개체이므로 서버 수준 보안 주체에게만 소유권을 이전할 수 있습니다.
ALTER AUTHORIZATION ON ENDPOINT::CantabSalesServer1 TO JaePak;
GO
변경 내역
업데이트된 내용 |
---|
목록에 ASYMMETRIC KEY를 추가했습니다. |
<entity_type> to <class_type>을 수정했습니다. |