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

... 121  122  123  124  125  126  127  128  129  130  131  132  [133]  134  135  ...
NoWriterDateCnt.TitleFile(s)
1730정성태8/11/201422035개발 환경 구성: 234. Royal TS의 터미널(Terminal) 연결에서 한글이 깨지는 현상 해결 방법
1729정성태8/11/201418112오류 유형: 236. SqlConnection - The requested Performance Counter is not a custom counter, it has to be initialized as ReadOnly.
1728정성태8/8/201430115.NET Framework: 453. C# - 오피스 파워포인트(Powerpoint) 파일을 WinForm에서 보는 방법파일 다운로드1
1727정성태8/6/201420362오류 유형: 235. SignalR 오류 메시지 - Counter 'Messages Bus Messages Published Total' does not exist in the specified Category. [2]
1726정성태8/6/201419296오류 유형: 234. IIS Express에서 COM+ 사용 시 SecurityException - "Requested registry access is not allowed" 발생
1725정성태8/6/201421263오류 유형: 233. Visual Studio 2013 Update3 적용 후 Microsoft.VisualStudio.Web.PageInspector.Runtime 모듈에 대한 FileNotFoundException 예외 발생
1724정성태8/5/201426021.NET Framework: 452. .NET System.Threading.Thread 개체에서 Native Thread Id를 구하는 방법 - 두 번째 이야기 [1]파일 다운로드1
1723정성태7/29/201458218개발 환경 구성: 233. DirectX 9 예제 프로젝트 빌드하는 방법 [3]파일 다운로드1
1722정성태7/25/201420946오류 유형: 232. IIS 500 Internal Server Error - NTFS 암호화된 폴더에 웹 애플리케이션이 위치한 경우
1721정성태7/24/201423958.NET Framework: 451. 함수형 프로그래밍 개념 - 리스트 해석(List Comprehension)과 순수 함수 [2]
1720정성태7/23/201421939개발 환경 구성: 232. C:\WINDOWS\system32\LogFiles\HTTPERR 폴더에 로그 파일을 남기지 않는 설정
1719정성태7/22/201425914Math: 13. 동전을 여러 더미로 나누는 경우의 수 세기(Partition Number) - 두 번째 이야기파일 다운로드1
1718정성태7/19/201435139Math: 12. HTML에서 수학 관련 기호/수식을 표현하기 위한 방법 - MathJax.js [4]
1716정성태7/17/201434850개발 환경 구성: 231. PC 용 무료 안드로이드 에뮬레이터 - genymotion
1715정성태7/13/201430483기타: 47. 운영체제 종료 후에도 USB 외장 하드의 전원이 꺼지지 않는 경우 [3]
1714정성태7/11/201420808VS.NET IDE: 92. Visual Studio 2013을 지원하는 IL Support 확장 도구
1713정성태7/11/201444510Windows: 98. 윈도우 시스템 디스크 용량 확보를 위한 "Package Cache" 폴더 이동 [1]
1712정성태7/10/201432780.NET Framework: 450. 영문 윈도우에서 C# 콘솔 프로그램의 유니코드 출력 방법 [3]
1711정성태7/10/201437990Windows: 97. cmd.exe 창에서 사용할 폰트를 추가하는 방법 [1]
1710정성태7/8/201430499개발 환경 구성: 230. 유니코드의 Surrogate Pair, Supplementary Characters가 뭘까요?파일 다운로드2
1709정성태7/8/201427312VS.NET IDE: 91. Visual Studio에서 32/64비트 IIS Express 실행하는 방법
1708정성태7/7/201424668VS.NET IDE: 90. Visual Studio - 사용자 정의 정적 분석 규칙 만드는 방법 [3]파일 다운로드1
1707정성태7/4/201422957.NET Framework: 449. C#에서 C++로 VARIANT 넘겨주는 방법파일 다운로드1
1706정성태7/3/201421332.NET Framework: 448. .NET SmartClient 컨트롤을 윈도우 8/2012에서 활성화하는 방법파일 다운로드1
1705정성태7/2/201435029VC++: 78. 보이어-무어(Boyer-Moore) 알고리즘이 정말 빠를까? [6]파일 다운로드1
1704정성태7/2/201421619.NET Framework: 447. w3wp.exe AppPool 재생(recycle)하는 방법 정리
... 121  122  123  124  125  126  127  128  129  130  131  132  [133]  134  135  ...