ALTER AUTHORIZATION(Transact-SQL)ALTER AUTHORIZATION (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

보안 개체의 소유권을 변경합니다.Changes the ownership of a securable.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax

-- Syntax for SQL Server  
ALTER AUTHORIZATION    
   ON [ <class_type>:: ] entity_name    
   TO { principal_name | SCHEMA OWNER }    
[;]    

<class_type> ::=    
    {    
        OBJECT | ASSEMBLY | ASYMMETRIC KEY | AVAILABILITY GROUP | CERTIFICATE     
      | CONTRACT | TYPE | DATABASE | ENDPOINT | FULLTEXT CATALOG     
      | FULLTEXT STOPLIST | MESSAGE TYPE | REMOTE SERVICE BINDING    
      | ROLE | ROUTE | SCHEMA | SEARCH PROPERTY LIST | SERVER ROLE     
      | SERVICE | SYMMETRIC KEY | XML SCHEMA COLLECTION    
    }    
-- Syntax for SQL Database  

ALTER AUTHORIZATION    
   ON [ <class_type>:: ] entity_name    
   TO { principal_name | SCHEMA OWNER }    
[;]    

<class_type> ::=    
    {    
      OBJECT | ASSEMBLY | ASYMMETRIC KEY | CERTIFICATE     
    | TYPE | DATABASE | FULLTEXT CATALOG     
    | FULLTEXT STOPLIST     
    | ROLE | SCHEMA | SEARCH PROPERTY LIST     
    | SYMMETRIC KEY | XML SCHEMA COLLECTION    
    }    
-- Syntax for Azure SQL Data Warehouse  

ALTER AUTHORIZATION ON    
    [ <class_type> :: ] <entity_name>     
    TO { principal_name | SCHEMA OWNER }    
[;]    

<class_type> ::= {    
      SCHEMA     
    | OBJECT     
}    

<entity_name> ::=    
{    
      schema_name    
    | [ schema_name. ] object_name    
}    
-- Syntax for Parallel Data Warehouse  

ALTER AUTHORIZATION ON    
    [ <class_type> :: ] <entity_name>     
    TO { principal_name | SCHEMA OWNER }    
[;]    

<class_type> ::= {    
      DATABASE     
    | SCHEMA     
    | OBJECT     
}    

<entity_name> ::=    
{    
      database_name 
    | schema_name    
    | [ schema_name. ] object_name    
}    

인수Arguments

<class_type> 소유자가 변경될 엔터티의 보안 개체 클래스입니다.<class_type> Is the securable class of the entity for which the owner is being changed. OBJECT가 기본값입니다.OBJECT is the default.

OBJECTOBJECT 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database, Azure SQL Data Warehouse, 병렬 데이터 웨어하우스Parallel Data Warehouse까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database, Azure SQL Data Warehouse, 병렬 데이터 웨어하우스Parallel Data Warehouse.
ASSEMBLYASSEMBLY 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database.
ASYMMETRIC KEYASYMMETRIC KEY 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database.
AVAILABILITY GROUPAVAILABILITY GROUP 적용 대상: SQL Server 2012부터 SQL Server 2017SQL Server 2017까지.APPLIES TO: SQL Server 2012 through SQL Server 2017SQL Server 2017.
CERTIFICATECERTIFICATE 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database.
CONTRACTCONTRACT 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.
DATABASEDATABASE 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database. 자세한 내용은 아래의 데이터베이스에 대한 ALTER AUTHORIZATION 섹션 참조하세요.For more information,see ALTER AUTHORIZATION FOR databases section below.
ENDPOINTENDPOINT 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.
FULLTEXT CATALOGFULLTEXT CATALOG 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database.
FULLTEXT STOPLISTFULLTEXT STOPLIST 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database.
MESSAGE TYPEMESSAGE TYPE 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.
REMOTE SERVICE BINDINGREMOTE SERVICE BINDING 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.
ROLEROLE 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database.
ROUTEROUTE 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.
SCHEMASCHEMA 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database, Azure SQL Data Warehouse, 병렬 데이터 웨어하우스Parallel Data Warehouse까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database, Azure SQL Data Warehouse, 병렬 데이터 웨어하우스Parallel Data Warehouse.
SEARCH PROPERTY LISTSEARCH PROPERTY LIST 적용 대상: SQL Server 2012(11.x)SQL Server 2012 (11.x)부터 SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database까지.APPLIES TO: SQL Server 2012(11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database.
SERVER ROLESERVER ROLE 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.
SERVICESERVICE 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.
SYMMETRIC KEYSYMMETRIC KEY 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database.
TYPETYPE 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database.
XML SCHEMA COLLECTIONXML SCHEMA COLLECTION 적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database.

entity_name entity_name
엔터티의 이름입니다.Is the name of the entity.

principal_name | 스키마 소유자principal_name | SCHEMA OWNER
엔터티를 소유하게 될 보안 주체의 이름입니다.Name of the security principal that will own the entity. 데이터베이스 보안 주체 즉, 데이터베이스 사용자 또는 역할이 데이터베이스 개체를 소유해야 합니다.Database objects must be owned by a database principal; a database user or role. 서버 보안 주체(로그인)가 서버 개체(예: 데이터베이스)를 소유해야 합니다.Server objects (such as databases) must be owned by a server principal (a login). 스키마 소유자principal_name으로 지정하여 개체의 스키마를 소유하는 보안 주체가 해당 개체를 소유하도록 표시합니다.Specify SCHEMA OWNER as the principal_name to indicate that the object should be owned by the principal that owns the schema of the object.

RemarksRemarks

ALTER AUTHORIZATION을 사용하면 소유자가 있는 엔터티의 소유권을 변경할 수 있습니다.ALTER AUTHORIZATION can be used to change the ownership of any entity that has an owner. 데이터베이스 수준 엔터티의 소유권은 데이터베이스 수준의 모든 보안 주체에게 이전할 수 있습니다.Ownership of database-contained entities can be transferred to any database-level principal. 서버 수준 엔터티의 소유권은 서버 수준 보안 주체에게만 이전할 수 있습니다.Ownership of server-level entities can be transferred only to server-level principals.

중요

SQL Server 2005SQL Server 2005부터 사용자는 다른 데이터베이스 사용자가 소유한 스키마에 포함된 OBJECT 또는 TYPE을 소유할 수 있습니다.Beginning with SQL Server 2005SQL Server 2005, a user can own an OBJECT or TYPE that is contained by a schema owned by another database user. 이 동작은 이전 버전의 SQL ServerSQL Server에서 변경되었습니다.This is a change of behavior from earlier versions of SQL ServerSQL Server. 자세한 내용은 OBJECTPROPERTY (Transact-SQL)TYPEPROPERTY (Transact-SQL)을 참조하세요.For more information, see OBJECTPROPERTY (Transact-SQL) and TYPEPROPERTY (Transact-SQL).

"object" 형식의 스키마 수준 엔터티인 테이블, 뷰, 함수, 프로시저, 큐 및 동의어 엔터티의 소유권은 이전할 수 있습니다.Ownership of the following schema-contained entities of type "object" can be transferred: tables, views, functions, procedures, queues, and synonyms.

연결된 서버, 통계, 제약 조건, 규칙, 기본값, 트리거, Service BrokerService Broker 큐, 자격 증명, 파티션 함수, 파티션 구성표, 데이터베이스 마스터 키, 서비스 마스터 키 및 이벤트 알림 엔터티의 소유권은 이전할 수 없습니다.Ownership of the following entities cannot be transferred: linked servers, statistics, constraints, rules, defaults, triggers, Service BrokerService Broker queues, credentials, partition functions, partition schemes, database master keys, service master key, and event notifications.

서버, 로그인, 사용자, 응용 프로그램 역할 및 열 보안 개체 클래스의 멤버 소유권은 이전할 수 없습니다.Ownership of members of the following securable classes cannot be transferred: server, login, user, application role, and column.

SCHEMA OWNER 옵션은 스키마 수준 엔터티의 소유권을 이전하는 경우에만 유효합니다.The SCHEMA OWNER option is only valid when you are transferring ownership of a schema-contained entity. SCHEMA OWNER는 엔터티의 소유권을 엔터티가 속한 스키마의 소유자에게 이전합니다.SCHEMA OWNER will transfer ownership of the entity to the owner of the schema in which it resides. 스키마 수준 엔터티는 OBJECT, TYPE 또는 XML SCHEMA COLLECTION 클래스뿐입니다.Only entities of class OBJECT, TYPE, or XML SCHEMA COLLECTION are schema-contained.

대상 엔터티가 데이터베이스가 아니고 엔터티가 새 소유자에게 이전되는 경우 대상에 대한 모든 사용 권한이 삭제됩니다.If the target entity is not a database and the entity is being transferred to a new owner, all permissions on the target will be dropped.

주의

SQL Server 2005SQL Server 2005에서는 스키마 동작이 이전 버전의 SQL ServerSQL Server와 다르게 변경되었습니다.In SQL Server 2005SQL Server 2005, the behavior of schemas changed from the behavior in earlier versions of SQL ServerSQL Server. 스키마가 데이터베이스 사용자와 같다고 가정하는 코드에서 올바른 결과가 반환되지 않을 수도 있습니다.Code that assumes that schemas are equivalent to database users may not return correct results. 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 문이 사용된 데이터베이스에서 사용하지 않아야 합니다.Old catalog views, including sysobjects, should not be used in a database in which any of the following DDL statements has ever been used: 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. 이러한 문이 사용된 데이터베이스에서는 새 카탈로그 뷰를 사용해야 합니다.In a database in which any of these statements has ever been used, you must use the new catalog views. 새 카탈로그 뷰는 SQL Server 2005SQL Server 2005에 도입된 보안 주체와 스키마 분리를 고려합니다.The new catalog views take into account the separation of principals and schemas that was introduced in SQL Server 2005SQL Server 2005. 카탈로그 뷰에 대한 자세한 내용은 카탈로그 뷰(Transact-SQL)를 참조하세요.For more information about catalog views, see Catalog Views (Transact-SQL).

다음 사항도 유의해야 합니다.Also, note the following:

중요

개체의 소유자를 확인하는 신뢰할 수 있는 유일한 방법은 sys.objects 카탈로그 뷰를 쿼리하는 것입니다.The only reliable way to find the owner of a object is to query the sys.objects catalog view. 형식의 소유자를 확인하는 신뢰할 수 있는 유일한 방법은 TYPEPROPERTY 함수를 사용하는 것입니다.The only reliable way to find the owner of a type is to use the TYPEPROPERTY function.

특수 상황과 상태Special Cases and Conditions

다음 표에서는 인증 변경에 적용되는 특수 상황, 예외 및 상태를 보여 줍니다.The following table lists special cases, exceptions, and conditions that apply to altering authorization.

클래스Class 조건Condition
OBJECTOBJECT 트리거, 제약 조건, 규칙, 기본값, 통계, 시스템 개체, 큐, 인덱싱된 뷰 또는 인덱싱된 뷰가 있는 테이블의 소유권을 변경할 수 없습니다.Cannot change ownership of triggers, constraints, rules, defaults, statistics, system objects, queues, indexed views, or tables with indexed views.
SCHEMASCHEMA 소유권이 이전될 때 명시적 소유자가 없는 스키마 수준 개체에 대한 권한이 삭제됩니다.When ownership is transferred, permissions on schema-contained objects that do not have explicit owners will be dropped. sys, dbo 또는 information_schema의 소유자를 변경할 수 없습니다.Cannot change the owner of sys, dbo, or information_schema.
TYPETYPE sys 또는 information_schema에 속하는 TYPE의 소유권을 변경할 수 없습니다.Cannot change ownership of a TYPE that belongs to sys or information_schema.
CONTRACT, MESSAGE TYPE 또는 SERVICECONTRACT, MESSAGE TYPE, or SERVICE 시스템 엔터티의 소유권을 변경할 수 없습니다.Cannot change ownership of system entities.
SYMMETRIC KEYSYMMETRIC KEY 전역 임시 키의 소유권을 변경할 수 없습니다.Cannot change ownership of global temporary keys.
CERTIFICATE 또는 ASYMMETRIC KEYCERTIFICATE or ASYMMETRIC KEY 이러한 엔터티의 소유권을 역할이나 그룹에 이전할 수 없습니다.Cannot transfer ownership of these entities to a role or group.
ENDPOINTENDPOINT 보안 주체는 로그인이어야 합니다.The principal must be a login.

데이터베이스에 대한 ALTER AUTHORIZATIONALTER AUTHORIZATION for databases

적용 대상: SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database.APPLIES TO: SQL Server 2017SQL Server 2017, Azure SQL 데이터베이스Azure SQL Database.

SQL Server의 경우.For SQL Server:

새 소유자 요구 사항: Requirements for the new owner:
새 소유자 보안 주체는 다음 중 하나여야 합니다.The new owner principal must be one of the following:

  • SQL Server 인증 로그인입니다.A SQL Server authentication login.
  • Windows 사용자(그룹이 아닌)를 나타내는 Windows 인증 로그인입니다.A Windows authentication login representing a Windows user (not a group).
  • Windows 그룹을 나타내는 Windows 인증 로그인을 통해 인증하는 Windows 사용자입니다.A Windows user that authenticates through a Windows authentication login representing a Windows group.

ALTER AUTHORIZATION 문을 실행하는 사용자 요구 사항:Requirements for the person executing the ALTER AUTHORIZATION statement:
sysadmin 고정 서버 역할의 구성원이 아닌 경우 최소한 데이터베이스에 대한 TAKE OWNERSHIP 권한과 함께 새 소유자 로그인에 대한 IMPERSONATE 권한이 있어야 합니다.If you are not a member of the sysadmin fixed server role, you must have at least TAKE OWNERSHIP permission on the database, and must have IMPERSONATE permission on the new owner login.

Azure SQL 데이터베이스의 경우.For Azure SQL Database:

새 소유자 요구 사항: Requirements for the new owner:
새 소유자 보안 주체는 다음 중 하나여야 합니다.The new owner principal must be one of the following:

  • SQL Server 인증 로그인입니다.A SQL Server authentication login.
  • Azure AD에 있는 페더레이션 사용자(그룹이 아닌)입니다.A federated user (not a group) present in Azure AD.
  • Azure AD에 있는 응용 프로그램 또는 관리 사용자(그룹이 아닌)입니다.A managed user (not a group) or an application present in Azure AD.

참고

새 소유자는 Azure Active Directory 사용자인 경우 새 소유자가 새 DBO가 될 데이터베이스에서 사용자로 존재할 수 없습니다.If the new owner is an Azure Active Directory user, it cannot exist as a user in the database where the new owner will become the new DBO. 이러한 Azure AD 사용자는 새 사용자에게 데이터베이스 소유권을 변경하는 ALTER AUTHORIZATION 문을 실행하기 전에 먼저 데이터베이스에서 제거되어야 합니다.Such Azure AD user must be first removed from the database before executing the ALTER AUTHORIZATION statement changing the database ownership to the new user. SQL Database를 사용하여 Azure Active Directory 사용자 구성에 대한 자세한 내용은 Azure Active Directory 인증을 사용하여 SQL Database 또는 SQL Data Warehouse에 연결을 참조하세요.For more information about configuring an Azure Active Directory users with SQL Database, see Connecting to SQL Database or SQL Data Warehouse By Using Azure Active Directory Authentication.

ALTER AUTHORIZATION 문을 실행하는 사용자 요구 사항:Requirements for the person executing the ALTER AUTHORIZATION statement:
해당 데이터베이스의 소유자를 변경하려면 대상 데이터베이스에 연결해야 합니다.You must connect to the target database to change the owner of that database.

다음과 같은 형식의 계정이 데이터베이스의 소유자를 변경할 수 있습니다.The following types of accounts can change the owner of a database.

  • 서버 수준 보안 주체 로그인입니다.The service-level principal login. (논리 서버를 만들 때 SQL Azure 관리자가 프로비전합니다.)(The SQL Azure administrator provisioned when the logical server was created.)
  • Azure SQL Server용 Azure Active Directory 관리자입니다.The Azure Active Directory administrator for the Azure SQL Server.
  • 현재 데이터베이스 소유자입니다.The current owner of the database.

다음 테이블은 요구 사항에 대한 요약입니다.The following table summarizes the requirements:

실행기Executor 대상Target 결과Result
SQL Server 인증 로그인SQL Server Authentication login SQL Server 인증 로그인SQL Server Authentication login 성공Success
SQL Server 인증 로그인SQL Server Authentication login Azure AD 사용자Azure AD user 실패Fail
Azure AD 사용자Azure AD user SQL Server 인증 로그인SQL Server Authentication login 성공Success
Azure AD 사용자Azure AD user Azure AD 사용자Azure AD user 성공Success

데이터베이스의 Azure AD 소유자를 확인하려면 사용자 데이터베이스에서(이 예제의 testdb에서) 다음의 Transact-SQL 명령을 실행합니다.To verify an Azure AD owner of the database execute the following Transact-SQL command in a user database (in this example testdb).

SELECT CAST(owner_sid as uniqueidentifier) AS Owner_SID   
FROM sys.databases   
WHERE name = 'testdb';  

출력은 richel@cqclinic.onmicrosoft.com에 할당된 Azure AD ObjectID에 해당하는 식별자(예, 6D8B81F6-7C79-444C-8858-4AF896C03C67) 입니다The output will be an identifier (such as 6D8B81F6-7C79-444C-8858-4AF896C03C67) which corresponds to Azure AD ObjectID assigned to richel@cqclinic.onmicrosoft.com
SQL Server 인증 로그인 사용자가 데이터베이스 소유자인 경우 해당 데이터베이스 소유자를 확인하려면 마스터 데이터베이스에서 다음 명령문을 실행합니다.When a SQL Server authentication login user is the database owner, execute the following statement in the master database to verify the database owner:

SELECT d.name, d.owner_sid, sl.name   
FROM sys.databases AS d  
JOIN sys.sql_logins AS sl  
ON d.owner_sid = sl.sid;  

최선의 구현 방법Best practice

데이터베이스의 개별 소유자로 Azure AD 사용자를 사용하는 대신 db_owner 고정된 데이터베이스 역할의 구성원으로 Azure AD 그룹을 사용합니다.Instead of using Azure AD users as individual owners of the database, use an Azure AD group as a member of the db_owner fixed database role. 다음 단계에서는 데이터베이스 소유자로 비활성화된 로그인을 구성하고 Azure Active Directory 그룹(mydbogroup)을 db_owner 역할의 멤버가 되게 하는 방법을 보여줍니다.The following steps, show how to configure a disabled login as the database owner, and make an Azure Active Directory group (mydbogroup) a member of the db_owner role.

  1. Azure AD 관리자로서 SQL Server에 로그인해 데이터베이스의 소유자를 비활성화된 SQL Server 인증 로그인으로 변경합니다.Login to SQL Server as Azure AD admin, and change the owner of the database to a disabled SQL Server authentication login. 예를 들어 사용자 데이터베이스에서 다음을 실행 합니다.For example, from the user database execute:
    ALTER AUTHORIZATION ON database::testdb TO DisabledLogin;
  2. 데이터베이스를 소유하고 사용자 데이터베이스에 사용자로서 추가해야 하는 Azure AD 그룹을 만듭니다.Create an Azure AD group that should own the database and add it as a user to the user database. 예를 들어 다음과 같이 사용할 수 있습니다.For example:
    CREATE USER [mydbogroup] FROM EXTERNAL PROVIDER;
  3. 사용자 데이터베이스에서 Azure AD 그룹을 나타내는 사용자를 db_owner 고정 데이터베이스 역할에 추가합니다.In the user database add the user representing the Azure AD group, to the db_owner fixed database role. 예를 들어 다음과 같이 사용할 수 있습니다.For example:
    ALTER ROLE db_owner ADD MEMBER mydbogroup;

이제 mydbogroup 구성원은 db_owner 역할의 구성원으로서 데이터베이스를 중앙 관리할 수 있습니다.Now the mydbogroup members can centrally manage the database as members of the db_owner role.

  • 이 그룹의 구성원이 Azure AD 그룹에서 제거되는 경우 이 데이터베이스 대한 dbo 권한이 자동으로 해제됩니다.When members of this group are removed from the Azure AD group, they automatically loose the dbo permissions for this database.
  • 마찬가지로 새 멤버가 mydbogroup Azure AD 그룹에 추가되는 경우 자동으로 데이터베이스에 대한 dbo 액세스 권한을 취득합니다.Similarly if new members are added to mydbogroup Azure AD group, they automatically gain the dbo access for this database.

특정 사용자에게 효과적인 dbo 권한이 있는지를 확인하려면 사용자가 다음 명령문을 실행하게 합니다.To check if a specific user has the effective dbo permission, have the user execute the following statement:

SELECT IS_MEMBER ('db_owner');  

반환 값 1은 사용자가 역할의 멤버라는 것을 나타냅니다.A return value of 1 indicates the user is a member of the role.

사용 권한Permissions

엔터티에 대한 TAKE OWNERSHIP 권한이 필요합니다.Requires TAKE OWNERSHIP permission on the entity. 새 소유자가 이 문을 실행하는 사용자가 아니면 1) 새 소유자가 사용자이거나 로그인인 경우 새 소유자에 대한 IMPERSONATE 권한, 2) 새 소유자가 역할인 경우 역할의 멤버 자격이나 역할에 대한 ALTER 권한 또는 3) 새 소유자가 응용 프로그램 역할인 경우 응용 프로그램 역할에 대한 ALTER 권한도 필요합니다.If the new owner is not the user that is executing this statement, also requires either, 1) IMPERSONATE permission on the new owner if it is a user or login; or 2) if the new owner is a role, membership in the role, or ALTER permission on the role; or 3) if the new owner is an application role, ALTER permission on the application role.

Examples

1.A. 테이블의 소유권 이전Transfer ownership of a table

다음 예에서는 Sprockets 테이블의 소유권을 MichikoOsada 사용자에게 이전합니다.The following example transfers ownership of table Sprockets to user MichikoOsada. 테이블은 Parts 스키마 내부에 있습니다.The table is located inside schema Parts.

ALTER AUTHORIZATION ON OBJECT::Parts.Sprockets TO MichikoOsada;    
GO    

쿼리가 다음과 같을 수도 있습니다.The query could also look like the following:

ALTER AUTHORIZATION ON Parts.Sprockets TO MichikoOsada;    
GO    

개체 스키마가 문의 일부로 포함되지 않으면 데이터베이스 엔진Database Engine은 사용자 기본 스키마에서 개체를 찾게 됩니다.If the objects schema is not included as part of the statement, the 데이터베이스 엔진Database Engine will look for the object in the users default schema. 예를 들어 다음과 같이 사용할 수 있습니다.For example:

ALTER AUTHORIZATION ON Sprockets TO MichikoOsada;    
ALTER AUTHORIZATION ON OBJECT::Sprockets TO MichikoOsada;    

2.B. 뷰 소유권을 스키마 소유자에게 이전Transfer ownership of a view to the schema owner

다음 예에서는 ProductionView06 뷰의 소유권을 뷰가 포함된 스키마의 소유자에게 이전합니다.The following example transfers ownership the view ProductionView06 to the owner of the schema that contains it. 뷰는 Production 스키마 내부에 있습니다.The view is located inside schema Production.

ALTER AUTHORIZATION ON OBJECT::Production.ProductionView06 TO SCHEMA OWNER;    
GO    

3.C. 스키마의 소유권을 사용자에게 이전Transfer ownership of a schema to a user

다음 예에서는 SeattleProduction11 스키마의 소유권을 SandraAlayo 사용자에게 이전합니다.The following example transfers ownership of the schema SeattleProduction11 to user SandraAlayo.

ALTER AUTHORIZATION ON SCHEMA::SeattleProduction11 TO SandraAlayo;    
GO    

4.D. 끝점의 소유권을 SQL Server 로그인에게 이전Transfer ownership of an endpoint to a SQL Server login

다음 예에서는 CantabSalesServer1 끝점의 소유권을 JaePak에게 이전합니다.The following example transfers ownership of endpoint CantabSalesServer1 to JaePak. 끝점은 서버 수준의 보안 개체이므로 서버 수준 보안 주체에게만 소유권을 이전할 수 있습니다.Because the endpoint is a server-level securable, the endpoint can only be transferred to a server-level principal.

적용 대상: SQL Server 2008SQL Server 2008 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

ALTER AUTHORIZATION ON ENDPOINT::CantabSalesServer1 TO JaePak;    
GO    

5.E. 테이블의 소유자 변경Changing the owner of a table

다음 각 예제는 Parts 데이터베이스에서 Sprockets 테이블의 소유자를 MichikoOsada 데이터베이스 사용자로 변경합니다.Each of the following examples changes the owner of the Sprockets table in the Parts database to the database user MichikoOsada.

ALTER AUTHORIZATION ON Sprockets TO MichikoOsada;    
ALTER AUTHORIZATION ON dbo.Sprockets TO MichikoOsada;    
ALTER AUTHORIZATION ON OBJECT::Sprockets TO MichikoOsada;    
ALTER AUTHORIZATION ON OBJECT::dbo.Sprockets TO MichikoOsada;    

6.F. 데이터베이스의 소유자 변경Changing the owner of a database

적용 대상: SQL Server 2008SQL Server 2008부터 SQL Server 2017SQL Server 2017, 병렬 데이터 웨어하우스Parallel Data Warehouse, SQL DatabaseSQL Database까지.APPLIES TO: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017, 병렬 데이터 웨어하우스Parallel Data Warehouse, SQL DatabaseSQL Database.

다음 예에서는 Parts 데이터베이스의 소유자를 로그인 MichikoOsada로 변경합니다.The following example change the owner of the Parts database to the login MichikoOsada.

ALTER AUTHORIZATION ON DATABASE::Parts TO MichikoOsada;    

7.G. SQL 데이터베이스의 소유자를 Azure AD 사용자로 변경Changing the owner of a SQL Database to an Azure AD User

다음 예에서는 cqclinic.onmicrosoft.com Active Directory로 지명된 조직에서 SQL Server용 Azure Active Directory 관리자가 현재 데이터베이스의 소유권을 targetDB 변경하고, 다음 명령을 사용해 AAD 사용자를 richel@cqclinic.onmicorsoft.com 새 데이터베이스 소유자로 만들 수 있습니다.In the following example, an Azure Active Directory administrator for SQL Server in an organization with an active directory named cqclinic.onmicrosoft.com, can change the current ownership of a database targetDB and make an AAD user richel@cqclinic.onmicorsoft.com the new database owner using the following command:

ALTER AUTHORIZATION ON database::targetDB TO [rachel@cqclinic.onmicrosoft.com];   

Azure AD 사용자의 경우 사용자 이름을 묶는 대괄호가 사용돼야 함을 유의하십시오.Note that for Azure AD users the brackets around the user name must be used.

참고 항목See Also

OBJECTPROPERTY(Transact-SQL) OBJECTPROPERTY (Transact-SQL)
TYPEPROPERTY (Transact-SQL) TYPEPROPERTY (Transact-SQL)
EVENTDATA(Transact-SQL)EVENTDATA (Transact-SQL)