오브젝트의 소유자 변경하기
SQL Server 2000 이전 버전에서는 오브젝트의 소유자를 변경하기 위해서 sp_changeobjectowner 시스템 저장 프로시저를 사용한다. 하지만, SQL Server 2005에 이르러서는 sp_changeobjectowner 시스템 저장 프로시저를 대신하여 ALTER AUTHORIZATION... 구문을 통해 오브젝트의 소유자를 변경할 수 있게 되었다.
1. SQL Server 2000 이전 버전에서
구문
sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner' |
인수
인수 |
데이터 형식 |
설명 |
---|---|---|
[ @objname = ] 'object' |
VARCHAR(776) |
현재 데이터베이스의 기존 오브젝트 명이다. 오브젝트에서 테이블, 뷰, 사용자 정의 함수 또는 저장 프로시저가 될 수 있다. 기본값은 없다. 스키마와 스키마 소유자가 동일한 이름을 갖고 있는 경우 object는 existing_owner.object 의 형태로 기존 개체의 소유자를 명시해야 한다. |
[ @newowner=] 'owner ' |
SYSNAME |
개체의 새 소유자가 될 보안 계정의 이름이다. 기본값은 없다. owner는 유효한 데이터베이스 사용자, 서버 역할, Microsoft Windows 로그인 또는 현재 데이터베이스에 액세스할 수 있는 Windows 그룹이어야 한다. 새 소유자가 해당하는 데이터베이스 수준의 보안 주체가 없는 Windows 사용자 또는 Windows 그룹이면 데이터베이스 사용자가 생성된다. |
실행 예
다음 예는 author 테이블의 소유자 를 testuser1에서 testuser2로 변경한다.
USE PUBS GO
EXEC sp_changeobjectowner 'testuser1.author','testuser2' GO |
2. SQL Server 2005 이후 버전에서
구문
ALTER AUTHORIZATION <entity_type> ::= |
인수
인수 | 설명 |
---|---|
<entity_type> :: |
소유자가 변경될 엔터티의 클래스 Object가 기본값이다. |
entity_name |
엔터티의 이름 |
principal_name |
엔터티를 소유하게 될 보안 주체의 이름 |
주의사항
이전 가능한 엔티티
이전 불가능한 엔티티
실행 예 1: 테이블의 소유권 이전
다음 예는 Person 스키마의 TestTable 테이블의 소유권을 testuser2 사용자에게 이전한다.
이에 앞서 현재 Person.TestTable 테이블의 소유권이 누구에게 있는지 확인해 보자
SELECT
Result >> UserName SchemaName ObjectName |
조회를 통해 Person.TestTable 테이블의 소유권은 testuser1에 있음을 확인할 수 있다.
이제 이 소유권을 testuser1 사용자에서 testuser2 사용자에게 이전하도록 하자.
ALTER AUTHORIZATION ON OBJECT::Person.TestTable TO testuser2; |
또는
ALTER AUTHORIZATION ON Person.TestTable TO testuser2; |
이제 제대로 소유권이 변경되었는지 확인해 보도록 하자.
SELECT
Result >> UserName SchemaName ObjectName |
Person.TestTable 테이블의 소유권이 testuser1 사용자에서 testuser2 사용자로 이전되었음을 확인할 수 있다.
실행 예 2: 스키마의 사용권을 다른 사용자에게 이전
다음 예는 TestUser1Schema 스키마의 소유권을 testuser1 사용자에게 소유권을 이전한다.
이에 앞서 현재 TestUser1Schema 스키마의 소유권이 누구에게 있는지 확인해 보도록 하자.
SELECT t1.[name] AS SchemaName Result >> SchemaName UserName |
조회를 통해 TestUser1Schema 스키마의 소유권이 testuser2에 있음을 확인할 수 있다.
이제 TestUser1Schema 스키마의 소유권을 testuser1 사용자에게 넘기도록 하겠다.
ALTER AUTHORIZATION ON SCHEMA::TestUser1Schema TO testuser1; |
이제 제대로 소유권이 변경되었는지 확인해 보도록 하자.
SELECT t1.[name] AS SchemaName Result >> SchemaName UserName |
TestUser1Schema 스키마의 소유권이 testuser2 사용자에서 testuser1 사용자로 이전되었음을 확인할 수 있다.
기타 예는 ALTER AUTHORIZATION의 BOL을 참조하기 바란다.
'연구개발 > SQL2005' 카테고리의 다른 글
Blocking 정보를 조회하는 스토어드 프로시저 - sp_who3 (0) | 2011.07.18 |
---|---|
스키마간에 개체 이동하기 (0) | 2011.07.18 |
데이터베이스 내의 모든 외래키 비활성화 및 활성화하기 (0) | 2011.07.18 |
인덱스의 크기 및 인덱스 조각화 정보 조회하기 (0) | 2011.07.18 |
IDENTITY가 설정된 컬럼에 데이터 입력하기-SET IDENTITY_INSERT (0) | 2011.07.18 |