2008. 9. 24. 16:08

소유자 변경.


역시나 자주 써먹던 쿼리문도 몆달 안쓰면 쉬운것도 잊어 버립니다.
아~~~ 나의 기억력 딱! 하루~~~~ ㅡ.ㅡ; 
그러기에 정리해서 기록은 필수~~~ 이제 무슨내용이든 기록하는 버릇을 길러볼렵니다.

ABC 라는 데이터 베이스 백업 파일인 ABC.bak 파일을 
ZZZ 라는 데이터 베이스로 이름을 변경하여 복원하였을경우 테이블의 소유자가 문제가 됩니다.

그럼 그 소유자 변경에 대해서 기록~ 또~ 기록~ 하도록 하겠습니다.

- 원본
DB명 : ABC
소유자 : admin
백업 파일 : ABC.bak

- 복원
DB명 : ZZZ
소유자 : copyman


위와 같이 백업 하였을경우
만약 복원한 ZZZ 의 DB 에서 zipe 이라는 테이블을 Select 할때 
select * from zipe

요렇게 하면 못볼러 옵니다. 그럼 원래 소유자인 admin 을 끼워서 불러 보면
select * from admin.zipe

요렇게 하면 불러 오게 됩니다.

그러면 복원한 ZZZ 의 소유자인 copyman 으로 소유자를 변경할려면..
exec sp_changeobjectowner 'admin.zipe', 'copyman'

이렇게 하면 해당 zipe 테이블에 대한 소유자를 copyman 으로 바뀌게 됩니다.
만약 이렇게 바꿔야할 테이블들이 많다면
exec sp_msforeachtable ' sp_changeobjectowner "?","copyman"'

으로 모든 테이블을 변경할 수 있습니다. 물론 사용자 테이블만 이죠.