사이트 내 전체검색
PHP
[MS-SQL] 오브젝트의 소유자 변경하기 (2009-09-25 수정)
로빈아빠
https://cmd.kr/php/741 URL이 복사되었습니다.

본문

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) 현재 데이터베이스의 기존 오브젝트 명이다.
오브젝트에서 테이블, 뷰, 사용자 정의 함수 또는 저장 프로시저가 될 수 있다.
기본값은 없다.
스키마와 스키마 소유자가 동일한 이름을 갖고 있는 경우 objectexisting_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


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
}


인수
인수 설명
:: 소유자가 변경될 엔터티의 클래스
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

(3). 스키마의 소유권을 사용자에게 이전
다음 예에서는 SeattleProduction11 스키마의 소유권을 SandraAlayo 사용자에게 이전합니다.
ALTER AUTHORIZATION ON SCHEMA::SeattleProduction11 TO SandraAlayo;
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 

댓글목록

등록된 댓글이 없습니다.

PHP
871 (5/18P)

Search

Copyright © Cmd 명령어 3.135.202.38