[MS-SQL] 오브젝트의 소유자 변경하기 (2009-09-25 수정)
로빈아빠
본문
SQL Server 2000 이전 버전에서는 오브젝트의 소유자를 변경하기 위해서 sp_changeobjectowner 시스템 저장 프로시저를 사용한다. 하지만, SQL Server 2005에 이르러서는 sp_changeobjectowner 시스템 저장 프로시저를 대신하여 ALTER AUTHORIZATION... 구문을 통해 오브젝트의 소유자를 변경할 수 있게 되었다.
1. SQL Server 2000 이전 버전에서
구문
실행 예
계정사용자 아이디로 된 것을 dbo로 변경 하시려면 아래 쿼리를 날려준 후에 결과물을 복사하여 실행select 'exec sp_changeobjectowner ''기존소유자.' + name + ''', ''dbo'''
from sysobjects where xtype = 'U'
다음 예는 author 테이블의 소유자 를 testuser1에서 testuser2로 변경한다.
2. SQL Server 2005 이후 버전에서
구문
인수
주의사항
데이터베이스 수준 엔터티의 소유권은 데이터베이스 수준의 모든 보안 주체에게 이전할 수 있다. 서버 수준 엔터티의 소유권은 서버 수준 보안 주체에게만 이전할 수 있다. SQL Server 2005부터 사용자는 다른 데이터베이스 사용자가 소유한 스키마에 포함된 OBJECT 또는 TYPE을 소유할 수 있다. SCHEMA OWNER 옵션은 스키마 수준 엔터티의 소유권을 이전하는 경우에만 유효하다. SCHEMA OWNER는 엔터티의 소유권을 엔터티가 속한 스키마의 소유자에게 이전한다. 스키마 수준 엔터티는 OBJECT, TYPE 또는 XML SCHEMA COLLECTION 클래스뿐이다.
이전 가능한 엔티티 "object" 형식의 스키마 수준 엔터티인 테이블, 뷰, 함수, 프로시저, 큐 및 동의어 엔터티
이전 불가능한 엔티티 연결된 서버, 통계, 제약 조건, 규칙, 기본값, 트리거, Service Broker 큐, 자격 증명, 파티션 함수, 파티션 구성표, 데이터베이스 마스터 키, 서비스 마스터 키 및 이벤트 알림 엔터티 서버, 로그인, 사용자, 응용 프로그램 역할 및 열 보안 개체 클래스의 멤버 소유권
실행 예
(1). 테이블의 소유권 이전
다음 예에서는
쿼리가 다음과 같을 수도 있습니다.
(2). 뷰 소유권을 스키마 소유자에게 이전
다음 예에서는
(3). 스키마의 소유권을 사용자에게 이전
다음 예에서는
(4). 끝점의 소유권을 SQL Server 로그인에게 이전
다음 예에서는
참고자료
http://blog.naver.com/wing3a07?Redirect=Log&logNo=100061342319
http://technet.microsoft.com/ko-kr/library/ms177519(SQL.90).aspx < SQL 2000 >
http://technet.microsoft.com/ko-kr/library/ms187359(SQL.90).aspx < SQL 2005 / 2008 >
http://www.microsoft.com/korea/technet/sql/tuning_guide_developer01.mspx#EEAA09
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 그룹이면 데이터베이스 사용자가 생성된다. |
실행 예
계정사용자 아이디로 된 것을 dbo로 변경 하시려면 아래 쿼리를 날려준 후에 결과물을 복사하여 실행select 'exec sp_changeobjectowner ''기존소유자.' + name + ''', ''dbo'''
from sysobjects where xtype = 'U'
다음 예는 author 테이블의 소유자 를 testuser1에서 testuser2로 변경한다.
USE PUBS
GO
EXEC sp_changeobjectowner 'testuser1.author','testuser2'
GO
GO
EXEC sp_changeobjectowner 'testuser1.author','testuser2'
GO
2. SQL Server 2005 이후 버전에서
구문
ALTER AUTHORIZATION
ON [ :: ] entity_name
TO { SCHEMA OWNER | principal_name }
::=
{
Object | Type | XML Schema Collection
| Fulltext Catalog | Fulltext Stoplist | Schema
| Assembly | Role | Message Type | Contract | Service
| Remote Service Binding | Route | Symmetric Key | Endpoint
| Certificate | Database
}
ON [ :: ] entity_name
TO { SCHEMA OWNER | principal_name }
::=
{
Object | Type | XML Schema Collection
| Fulltext Catalog | Fulltext Stoplist | Schema
| Assembly | Role | Message Type | Contract | Service
| Remote Service Binding | Route | Symmetric Key | Endpoint
| Certificate | Database
}
인수
인수 | 설명 |
---|---|
:: | 소유자가 변경될 엔터티의 클래스 Object가 기본값이다. |
entity_name | 엔터티의 이름 |
principal_name | 엔터티를 소유하게 될 보안 주체의 이름 |
주의사항
데이터베이스 수준 엔터티의 소유권은 데이터베이스 수준의 모든 보안 주체에게 이전할 수 있다. 서버 수준 엔터티의 소유권은 서버 수준 보안 주체에게만 이전할 수 있다. SQL Server 2005부터 사용자는 다른 데이터베이스 사용자가 소유한 스키마에 포함된 OBJECT 또는 TYPE을 소유할 수 있다. SCHEMA OWNER 옵션은 스키마 수준 엔터티의 소유권을 이전하는 경우에만 유효하다. SCHEMA OWNER는 엔터티의 소유권을 엔터티가 속한 스키마의 소유자에게 이전한다. 스키마 수준 엔터티는 OBJECT, TYPE 또는 XML SCHEMA COLLECTION 클래스뿐이다.
이전 가능한 엔티티 "object" 형식의 스키마 수준 엔터티인 테이블, 뷰, 함수, 프로시저, 큐 및 동의어 엔터티
이전 불가능한 엔티티 연결된 서버, 통계, 제약 조건, 규칙, 기본값, 트리거, Service Broker 큐, 자격 증명, 파티션 함수, 파티션 구성표, 데이터베이스 마스터 키, 서비스 마스터 키 및 이벤트 알림 엔터티 서버, 로그인, 사용자, 응용 프로그램 역할 및 열 보안 개체 클래스의 멤버 소유권
실행 예
(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
GO
(3). 스키마의 소유권을 사용자에게 이전
다음 예에서는
SeattleProduction11
스키마의 소유권을 SandraAlayo
사용자에게 이전합니다.
ALTER AUTHORIZATION ON SCHEMA::SeattleProduction11 TO SandraAlayo;
GO
GO
(4). 끝점의 소유권을 SQL Server 로그인에게 이전
다음 예에서는
CantabSalesServer1
끝점의 소유권을 JaePak
에게 이전합니다. 끝점은 서버 수준의 보안 개체이므로 서버 수준 보안 주체에게만 소유권을 이전할 수 있습니다.ALTER AUTHORIZATION ON ENDPOINT::CantabSalesServer1 TO JaePak
참고자료
http://blog.naver.com/wing3a07?Redirect=Log&logNo=100061342319
http://technet.microsoft.com/ko-kr/library/ms177519(SQL.90).aspx < SQL 2000 >
http://technet.microsoft.com/ko-kr/library/ms187359(SQL.90).aspx < SQL 2005 / 2008 >
http://www.microsoft.com/korea/technet/sql/tuning_guide_developer01.mspx#EEAA09
관련링크
댓글목록
등록된 댓글이 없습니다.