-
SqlServer 백업 / 복제 (DB Copy 방식) 정리♣ Tech & Biz Salon/Tech 2012. 12. 11. 15:26
현재 데이터가 입력되고 있는 테스트 db가 있다. 이 db의 데이터가 운영 db에 (운영db는 아직 생성안됨) 카피되어야 한다.1) 데이터 입력기간중 운영db 세팅을 할 것이므로
이때는 테스트 db 백업한거를 바탕으로 운영 db를 생성한다.2) 테스트 db에 데이터 다 쌓은후 운영 db에 다시 넣어줘야 하는데
이때는 테스트 db 내용 그대로 운영 db에 ( 운영 db에 입력된 데이터 무시 ) 복사해줄 예정이다.
상기 1) 2) 작업 시뮬레이션을 위해 일단 내 로컬을 운영db라 생각하고 테스트를 진행해보았다.< 환경은 SqlServer 2008 R2 >
백업
* 복사전용 백업 : "2005 버젼부터 지원, 다른 백업과 달리 복원 체인에 영향을 주지 않는다. 즉 기존 차등 백업이나 트랜잭션 로그 백업순서에 영향을 미치지 않는다. 이 방법은 현재 db를 테스트 목적으로 다른곳으로 옮기고자 할때 유용하게 사용할수 있다" (책 - SQLServer 운영과 튜닝) --> 즉 정말 문제시 복구를 위한 백업이 아니라, 카피한다던가 하는 목적일때 요 옵션을 쓰면 되겠군* 백업세트 만료 기한 :
요게 뭔지는 이 글 최하단의 참고정보쪽을 보세요~
복원
* 복원할때 아예 없던 db를 백업본을 통해 생성을 할수도 있다.
이때는 이름짓고 싶은 db명을 써주면 된다. ( 정말 그럴까?;; 난 기존 db명 그대로 만들었는데 별 문제는 없었음 )* 이미 db는 있는 상태에서 다시 카피할때에는 이미 있는 db에 세션이 붙어있을땐 위의 메시지를 볼 수 있다.
이 경우에는 이렇게 대처한다.
- exec sp_who
- kill 58 (58은 죽이고 싶은 spid 의 예시값)
* 복원된 db를 보라. 어라? 사용권한에 pssuser 사용자가 그대로 생겨버렸네??
그렇다. db 카피때 그대로 따라온다.현 db에는 pssuser 이미 있건 없건 이건 아래 두 캡쳐화면 같은 걸 초래한다.
암튼... 일단 pssuser라는 login 이 없다면 일단 만들도록 한다.
( 참고로 이 과정에서 백업과 복제쪽의 pssuser 패스워드가 달라도 문제가 생길수는 있는거 같다. 난 동일하므로 문제는 없었다. 그런 문제가 있거나 내용이 궁금하면 참고 : http://www.cjstory.net/?p=64 )
이후 pssuser로 로긴해봤자 pssdb 의 내용을 보지 못할것이다.
해당 login 우클릭해서 pssdb 에 매핑하려하면 바로 아래와 같은 창이 나온다.
메시지 : 현재 데이터베이스에 사용자, 그룹 또는 역할 'pssuser'이(가) 이미 있습니다. (.Net SqlClient Data Provider)
하나 더 밑의 창은 언제 나온것인지 기억이 안남.
이 깔끔하지 않은 sqlserver의 애매한 구조가 맘에 안드는데 어쨌든 문제는 해결해야 한다. 방법은?
login 'pssuser' 와 db 사용자 'pssuser' 의 끊어진 상태를 연결해주어야 한다고 한다.
그런 끊어진 관계가 뭐가 있는지는 아래 명령어로 확인하라는데... 난 보이지 않았다. (나의 실수일수도 있다)
exec sp_change_users_login 'Report'
그리고 끊어진 것을 있는 것은 아래와 같이 하였다.
USE pssdb
GO
exec sp_change_users_login 'Update_One' , 'pssuser', 'pssuser'
go
use pssdb
go
alter user pssuser with login = pssuser
go
* 'Update_One' 이라는건 한건을 업데이트 한다는... 해당 sp의 파라미터 값이므로 그대로 쓰면 된다.
* 복제후 IDENTITY 컬럼의 최종값이 유지되는지 테스트 결과 성공함.경력의 많은 기간동안 작업하는 내 PC / 놋북에서 운영db에 클라이언트 툴등을 통해 편하게 접속/이용할수 있었다 ( 같은 망 또는 VPN 등으로 )
허나 지금은 그렇지 않고 아예 방문을 해서 해야하기 때문에... 실제 수행시 시행착오를 최소화하기 위해 시뮬레이션을 자세히 밟고, 기록도 남겨본다.
회사에서 내가 쓸 노트북이 있으면 좋을텐데 그렇지도 못하여... 서버 세팅 방문때 다른 사람 쓰는걸 빌려가야 하는데... 훔... 거참 곤란, 귀찮을듯... 일정 잡는거 자체부터 그렇겠네....
※ 관련하여 참고할만한 정보
기존 내 게시물 : SQLServer2008 - 설치, Create User, DB 등 초기세팅
현재 데이터베이스에 사용자 그룹 또는 역할 'test' 이미 있습니다
( http://blog.naver.com/saint7710/10149071782 )
http://support.microsoft.com/kb/314546/ko
백업 세트에 기존 'xxxxx' 데이터베이스가 아닌 데이터베이스의 백업이 있습니다
( http://blog.naver.com/mindkhj/100110099519 )http://support.microsoft.com/kb/274188 : 비밀번호 변경에 대한 얘기도 있음
백업세트 만료기한 관련- http://bloglee.egloos.com/4750912
- http://msdn.microsoft.com/ko-kr/library/ms188697.aspx
책 : SQLServer 운영과 튜닝'♣ Tech & Biz Salon > Tech' 카테고리의 다른 글
JDK 1.4 64bit 호환 정보 (windows 2003, Itanium 2 processors) (0) 2012.12.18 SQLServer2008 - 설치, Create User, DB 등 초기세팅 (0) 2012.12.11 Windows에 Tomcat 세팅 및 Webapp 로딩 (0) 2012.11.28