Windows DB

MS-SQL 개체 소유권 변경

2008.09.18 03:14

레이쩡 조회 수:24278

sp_changeobjectowner
현재 데이터베이스에 있는 개체의 소유자를 변경합니다.

구문
sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner'

인수
[@objname =] 'object'

현재 데이터베이스 안에 있는 기존 테이블, 뷰 또는 저장 프로시저의 이름입니다. object는 nvarchar(517)이며, 기본값은 없습니다. object는 existing_owner.object 형식으로 기존 개체 소유자로 한정될 수 있습니다.

[@newowner =] 'owner'

개체의 새 소유자가 될 보안 계정의 이름입니다. owner는 sysname이며, 기본값은 없습니다. owner는 반드시 현재 데이터베이스 내의 유효한 Microsoft® SQL Server™ 사용자 또는 역할이거나 Microsoft Windows NT® 사용자 또는 그룹이어야 합니다. Windows NT 사용자 또는 그룹을 지정할 경우 sp_grantdbaccess를 사용하여 추가하고 데이터베이스에서 Windows NT 사용자 또는 그룹으로 알고 있는 이름을 지정합니다.

반환 코드 값
0(성공) 또는 1(실패)

비고
개체의 소유자(또는 개체를 소유하고 있는 그룹 또는 역할의 구성원)은 개체에 대해 특수 권한을 갖습니다. 개체 소유자는 개체와 소유된 INSERT, UPDATE, DELETE, SELECT 또는 EXECUTE 등과 같은 모든 Transact-SQL문을 실행할 수 있으며, 개체에 대한 사용 권한을 관리할 수 있습니다.

개체를 소유한 보안 계정을 삭제해야 하지만 개체는 계속 유지해야 하는 경우에는 sp_changeobjectowner를 사용하여 개체의 소유자를 변경하십시오. 이 프로시저는 개체에서 기존의 모든 권한을 제거합니다. sp_changeobjectowner를 계속 실행하려면 모든 권한을 다시 적용해야 합니다.

이러한 이유 때문에, sp_changeobjectowner를 실행하기 전에 기존의 사용 권한을 스크립트하는 것이 좋습니다. 개체의 소유권이 변경되면 사용 권한을 다시 적용하기 위해 스크립트를 사용할 수도 있습니다. 사용 권한 스크립트의 개체 소유자를 수정한 후에 실행해야 합니다. 데이터베이스 스크립팅에 관한 자세한 내용은 데이터베이스 문서화 및 스크립팅을 참조하십시오.

데이터베이스의 소유자를 변경하려면 sp_changedbowner를 사용하십시오.

사용 권한
sysadmin고정 서버 역할 구성원, db_owner 고정 데이터베이스 역할의 구성원 또는 db_ddladmin 및 db_securityadmin 고정 데이터베이스 역할 모두의 구성원만이 sp_changeobjectowner를 실행할 수 있습니다.

예제
다음은 authors 테이블의 소유자를 CorporateGeorgeW로 변경하는 것을 보여 주는 예제입니다.

EXEC sp_changeobjectowner 'authors', 'CorporateGeorgeW'


 
예제
다음은 authors 테이블의 소유자를 CorporateGeorgeW로 변경하는 것을 보여 주는 예제입니다.
EXEC sp_changeobjectowner 'authors', 'CorporateGeorgeW'

 

sp_change_users_login 프로시져를 사용하여 로그인과 사용자를 매핑하시면 됩니다.
아래의 온라인 설명서 예제를 참고하세요..

사용자의 로그인 변경 다음은 pubs 데이터베이스의 Mary라는 사용자와 기존 로그인의 연결을 변경하여(sp_addlogin 를 사용하여 추가된) NewMary로의 연결을 보여 주는 예제입니다.


--Add the new login.
USE master
go
EXEC sp_addlogin "NewMary"
go


--Change the user account to link with the "NewMary" login.
USE pubs
go
EXEC sp_change_users_login "Update_One", "Mary", "NewMary" ,,


참고. 만약 기존의 로그인정보를 유지하고자 하는 경우에는

EXEC sp_change_users_login "Update_One", "Mary", "Mary" 와 같이 기존과 변경되는 정보를 같이 하면 되겠습니다.

 

프로시저 sp_changedbowner

sp_changedbowner 사용자, DB이름

예)sp_changedbowner  host_dba,hosting