Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

TFS 2012 Express의 필수 보완 작업: 데이터베이스 백업

며칠 전에, 집에 있는 컴퓨터의 하드 디스크 하나가 장애가 발생했습니다. RAID 1로 묶여져 있는 하드라서 다행히 데이터 손실 없이 지나갈 수 있었는데요. 이처럼, 항상 컴퓨터 부품은 어느 때든지 손상이 발생할 수 있음을 기본으로 가정해야 한다는 것을 잊으면 안됩니다. ^^

이런 이유로, 보통 TFS Express를 로컬 소스 세이프처럼 사용하는 '노트북 사용자'라면 '백업'이 필수라고 할 수 있는데, TFS는 이런 상황에 대한 쉬운 해결책으로 "Power Tools"를 제공하고 있습니다.

그리고, 마침 "TFS 2012" 버전에 대해서도 얼마 전에 공개가 되어 소개해 드립니다. ^^

Microsoft Visual Studio Team Foundation Server 2012 Power Tools
; https://marketplace.visualstudio.com/items?itemName=TFSPowerToolsTeam.MicrosoftVisualStudioTeamFoundationServer2012Power

백업 방법에 관해서는 다음의 글에서 2010을 기준으로 설명을 하고 있지만 2012와 비교해 크게 다르지 않습니다.

TFS 2010 Power Tools + TFS Backup and Restore Hands on Lab
; http://myalmblog.com/2010/09/12/tfs-2010-power-tools-tfs-backup-and-restore-hands-on-lab/

이 프로그램을 "TFS 2012 Power Tools"를 TFS 2012 Express가 있는 컴퓨터에 설치하면 "Team Foundation Server Express Administration Console"에 "Database Backup Tools"라는 항목이 더 추가됩니다.

howto_tfs_backup_1.png

어차피 저도 백업 수단을 강구해야 하므로, 위의 글을 보면서 따라 했는데요. 백업 파일이 놓일 경로는 UNC 경로이긴 하지만, 어쨌든 형식만 맞추면 되므로 그냥 "\\[로컬컴퓨터이름]\..."와 같은 식으로 지정할 수 있어서 반드시 네트워크 컴퓨터일 필요는 없습니다.

그런데, 모든 설정을 완료한 후 "Readiness Checks Validate that Your System is Ready to Configure" 단계에서 꼭 마지막 단계의 "Permissions" 확인에서 오류가 발생했습니다.

Account [계정명] failed to create backups using path \\targetpc\tfs_backup

[Info   @02:44:15.403] +-+-+-+-+-| Verify backups can be created |+-+-+-+-+-
[Info   @02:44:15.403] Starting Node: VerifyTestBackupCreated
[Info   @02:44:15.403] NodePath : Container/Progress/VerifyTestBackupCreated
[Info   @02:44:15.407] Creating dummy database to test backup.
[Info   @02:44:22.046] Node returned: Error
[Error  @02:44:22.046] Account [계정명] failed to create backups using path \\targetpc\tfs_backup
[Info   @02:44:22.046] Completed VerifyDummyBackupCreation: Error
[Info   @02:44:22.046] -----------------------------------------------------

이와 관련해서 많은 질의/응답들이 있는데 참고하시고요.

Creating a backup in Team Foundation Server 2010 using the Power Tools
; http://blog.hinshelwood.com/creating-a-backup-in-team-foundation-server-2010-using-the-power-tools/

이벤트 로그를 살펴보니, 제 경우에 다음과 같은 오류가 눈에 띕니다.

BackupDiskFile::CreateMedia: Backup device '\\targetpc\tfs_backup\temp_20120920204415.bak' failed to create. Operating system error 5(Access is denied.).
BACKUP failed to complete the command BACKUP DATABASE temp_20120920204415. Check the backup application log for detailed messages.


조사 결과, 제 SQL 서버 프로세스 - sqlservr.exe가 "NETWORK Service" 계정으로 실행 중임을 작업관리자를 통해서 알게 되었습니다. 즉, (로컬) 공유 폴더에는 그 계정으로 권한이 없었기 때문에 이런 오류가 났던 것입니다.

해결은 일단, 공유 폴더 측에 "NETWORK Service" 계정으로 권한을 주었습니다.




백업을 했다면 복원을 해야겠지요. 최악의 경우로, 제 노트북이 망가진 걸로 가정하고 작업을 진행해 보겠습니다.

TFS Power Tools의 "Database Backup Tools" 기능을 이용해서 백업을 한 경우, 다음의 글에서 설명한 방법을 따르면 쉽게 복원이 가능합니다.

Restore the Databases
; https://docs.microsoft.com/en-us/azure/devops/server/admin/backup/tut-single-svr-restore-dbs

우선, 새롭게 운영체제를 설치한 컴퓨터에 SQL Server 2012 Express를 설치한 후, SSMS 도구를 실행해서 백업했던 모든 DB를 "Restore Database" 메뉴를 이용해서 복원합니다.

보통, bak (Full 백업) 파일과 trn (트랜잭션) 파일로 백업이 되어 있을 텐데요. SQL 서버의 DB 복원 방법을 모른다면 꼭 Restore the Databases 글에 나온 방법을 참고하시기 바랍니다. 안 그러면, 저처럼 ^^ 트랜잭션 파일을 복원할 때 다음과 같은 오류를 만나게 됩니다.

The log or differential backup cannot be restored because no files are ready to rollforward. 
; http://justgeeks.blogspot.kr/2009/03/log-or-differential-backup-cannot-be.html

일단, DB 복원만 되었으면 다음 절차는 간단합니다. TFS Express를 설치하고, "Configuration Center" 창이 뜨면 "Application-Tier Only" 옵션으로 마법사를 시작해서 설정 작업을 마무리 해주시면 됩니다.

모든 설정이 완료되고, "http://localhost:8080/tfs"로 접속하면 정상적으로 Web Access가 되는 것을 확인할 수 있습니다.

즉, Active Directory가 아니어도, 아무런 계정 문제 없이 정상적으로 백업/복원이 가능하다는 것!

참고로, 제 경우에는 TFS DB를 로컬 PC에 백업하고, 그 백업 폴더를 윈도우 8의 백업 기능에 포함시켜 두었습니다. 역시... 백업이 되어야 안심하고 컴퓨터를 사용할 수 있습니다. ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 7/17/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 



2014-07-28 05시11분
정성태

... 61  62  63  64  65  66  67  68  69  70  71  72  73  74  [75]  ...
NoWriterDateCnt.TitleFile(s)
12061정성태11/20/201919436Windows: 167. CoTaskMemAlloc/CoTaskMemFree과 윈도우 Heap의 관계
12060정성태11/20/201921043디버깅 기술: 132. windbg/Visual Studio - HeapFree x64의 동작 분석
12059정성태11/20/201920344디버깅 기술: 131. windbg/Visual Studio - HeapFree x86의 동작 분석
12058정성태11/19/201920918디버깅 기술: 130. windbg - CoTaskMemFree/FreeCoTaskMem에서 발생한 덤프 분석 사례
12057정성태11/18/201916737오류 유형: 579. Visual Studio - Memory 창에서 유효한 주소 영역임에도 "Unable to evaluate the expression." 오류 출력
12056정성태11/18/201922456개발 환경 구성: 464. "Microsoft Visual Studio Installer Projects" 프로젝트로 EXE 서명 및 MSI 파일 서명 방법파일 다운로드1
12055정성태11/17/201916538개발 환경 구성: 463. Visual Studio의 Ctrl + Alt + M, 1 (Memory 1) 등의 단축키가 동작하지 않는 경우
12054정성태11/15/201918165.NET Framework: 869. C# - 일부러 GC Heap을 깨뜨려 GC 수행 시 비정상 종료시키는 예제
12053정성태11/15/201919836Windows: 166. 윈도우 10 - 명령행 창(cmd.exe) 속성에 (DotumChe, GulimChe, GungsuhChe 등의) 한글 폰트가 없는 경우
12052정성태11/15/201918671오류 유형: 578. Azure - 일정(schedule)에 등록한 runbook이 1년 후 실행이 안 되는 문제(Reason - The key used is expired.)
12051정성태11/14/201922149개발 환경 구성: 462. 시작하자마자 비정상 종료하는 프로세스의 메모리 덤프 - procdump [1]
12050정성태11/14/201919711Windows: 165. AcLayers의 API 후킹과 FaultTolerantHeap
12049정성태11/13/201920224.NET Framework: 868. (닷넷 프로세스를 대상으로) 디버거 방식이 아닌 CLR Profiler를 이용해 procdump.exe 기능 구현
12048정성태11/12/201920374Windows: 164. GUID 이름의 볼륨에 해당하는 파티션을 찾는 방법
12047정성태11/12/201922674Windows: 163. 안전하게 eject시킨 USB 장치를 물리적인 재연결 없이 다시 인식시키는 방법
12046정성태10/29/201917190오류 유형: 577. windbg - The call to LoadLibrary(...\sos.dll) failed, Win32 error 0n193
12045정성태10/27/201917149오류 유형: 576. mstest.exe 실행 시 "Visual Studio Enterprise is required to execute the test." 오류 - 두 번째 이야기
12044정성태10/27/201916724오류 유형: 575. mstest.exe - System.Resources.MissingSatelliteAssemblyException: The satellite assembly named "Microsoft.VisualStudio.ProductKeyDialog.resources.dll, ..."
12043정성태10/27/201918310오류 유형: 574. Windows 10 설치 시 오류 - 0xC1900101 - 0x4001E
12042정성태10/26/201917950오류 유형: 573. OneDrive 하위에 위치한 Documents, Desktop 폴더에 대한 권한 변경 시 "Unable to display current owner"
12041정성태10/23/201918910오류 유형: 572. mstest.exe - The load test results database could not be opened.
12040정성태10/23/201919351오류 유형: 571. Unhandled Exception: System.Net.Mail.SmtpException: Transaction failed. The server response was: 5.2.0 STOREDRV.Submission.Exception:SendAsDeniedException.MapiExceptionSendAsDenied
12039정성태10/22/201916784스크립트: 16. cmd.exe의 for 문에서는 ERRORLEVEL이 설정되지 않는 문제
12038정성태10/17/201916887오류 유형: 570. SQL Server 2019 RC1 - SQL Client Connectivity SDK 설치 오류
12037정성태10/15/201924373.NET Framework: 867. C# - Encoding.Default 값을 바꿀 수 있을까요?파일 다운로드1
12036정성태10/14/201925528.NET Framework: 866. C# - 고성능이 필요한 환경에서 GC가 발생하지 않는 네이티브 힙 사용파일 다운로드1
... 61  62  63  64  65  66  67  68  69  70  71  72  73  74  [75]  ...