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분
정성태

... 31  32  33  34  35  [36]  37  38  39  40  41  42  43  44  45  ...
NoWriterDateCnt.TitleFile(s)
13036정성태4/24/202215168.NET Framework: 1997. C# - nano 시간을 가져오는 방법 [2]
13035정성태4/22/202216425Windows: 204. Windows 10부터 바뀐 QueryPerformanceFrequency, QueryPerformanceCounter
13034정성태4/21/202214002.NET Framework: 1996. C# XingAPI - 주식 종목에 따른 PBR, PER, ROE, ROA 구하는 방법(t3320, t8430 예제)파일 다운로드1
13033정성태4/18/202215118.NET Framework: 1195. C# - Thread.Yield와 Thread.Sleep(0)의 차이점(?)
13032정성태4/17/202215313오류 유형: 805. Github의 50MB 파일 크기 제한 - warning: GH001: Large files detected. You may want to try Git Large File Storage
13031정성태4/15/202214985.NET Framework: 1194. C# - IdealProcessor와 ProcessorAffinity의 차이점
13030정성태4/15/202213534오류 유형: 804. 정규 표현식 오류 - Quantifier {x,y} following nothing.
13029정성태4/14/202214930Windows: 203. iisreset 후에도 이전에 설정한 전역 환경 변수가 w3wp.exe에 적용되는 문제
13028정성태4/13/202215016.NET Framework: 1193. (appsettings.json처럼) web.config의 Debug/Release에 따른 설정 적용
13027정성태4/12/202214909.NET Framework: 1192. C# - 환경 변수의 변화를 알리는 WM_SETTINGCHANGE Win32 메시지 사용법파일 다운로드1
13026정성태4/11/202216298.NET Framework: 1191. C 언어로 작성된 FFmpeg Examples의 C# 포팅 전체 소스 코드 [3]
13025정성태4/11/202215555.NET Framework: 1190. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 vaapi_encode.c, vaapi_transcode.c 예제 포팅
13024정성태4/7/202213790.NET Framework: 1189. C# - 런타임 환경에 따라 달라진 AppDomain.GetCurrentThreadId 메서드
13023정성태4/6/202214386.NET Framework: 1188. C# - ffmpeg(FFmpeg.AutoGen)를 이용한 transcoding.c 예제 포팅 [3]
13022정성태3/31/202213952Windows: 202. 윈도우 11 업그레이드 - "PC Health Check"를 통과했지만 여전히 업그레이드가 안 되는 경우 해결책
13021정성태3/31/202215765Windows: 201. Windows - INF 파일을 이용한 장치 제거 방법
13020정성태3/30/202213998.NET Framework: 1187. RDP 접속 시 WPF UserControl의 Unloaded 이벤트 발생파일 다운로드1
13019정성태3/30/202214471.NET Framework: 1186. Win32 Message를 Code로부터 메시지 이름 자체를 텍스트로 구하고 싶다면?파일 다운로드1
13018정성태3/29/202215215.NET Framework: 1185. C# - Unsafe.AsPointer가 반환한 포인터는 pinning 상태일까요? [5]
13017정성태3/28/202214193.NET Framework: 1184. C# - GC Heap에 위치한 참조 개체의 주소를 알아내는 방법 - 두 번째 이야기 [3]
13016정성태3/27/202215835.NET Framework: 1183. C# 11에 추가된 ref 필드의 (우회) 구현 방법파일 다운로드1
13015정성태3/26/202217526.NET Framework: 1182. C# 11 - ref struct에 ref 필드를 허용 [1]
13014정성태3/23/202214991VC++: 155. CComPtr/CComQIPtr과 Conformance mode 옵션의 충돌 [1]
13013정성태3/22/202212768개발 환경 구성: 641. WSL 우분투 인스턴스에 파이썬 2.7 개발 환경 구성하는 방법
13012정성태3/21/202212427오류 유형: 803. C# - Local '...' or its members cannot have their address taken and be used inside an anonymous method or lambda expression
13011정성태3/21/202215913오류 유형: 802. 윈도우 운영체제에서 웹캠 카메라 인식이 안 되는 경우
... 31  32  33  34  35  [36]  37  38  39  40  41  42  43  44  45  ...