kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

TFSにおけるSQL Serverの扱い

本記事はTFS Advent Calendarの12/13分の記事です。
TFS Advent Calendar : ATND
りばてぃさんがTFS PowerToolsを利用したバックアップについて詳細に書かれています。
寝ても覚めても.NET(?) : TFS Advent Calendar Day 10~TFS 2010のバックアップとリストア~
バックアップというよりもSQL Serverのメンテナンスについてもうちょっと見てみましょう。TFSのリポジトリはすべてSQL Sereverに格納しているので、SQL Serverがどういう設定になっているか理解していないと思わぬトラブルに巻き込まれます。
Team Foundation Server データベース
典型的な例としてはSQL ServerにおけるTFSのデータベースはすべて「完全」で構築されています。完全で構築されている場合、SQL Serverのバックアップを取らないとトランザクションログは切り捨てられません。切り捨てられないということは、バックアップを行わないと、いつかはディスクがあふれることになります。バックアップはTFS Powertoolsでとれますが、もうちょっと細かくやる場合、SQL Server側でメンテナンスプランを作ります。私の手元ではこんな感じで作っています。TFS以外もあるので、結構いろいろ入れていますが、整合性確認、履歴のクリーンアップ、メンテナンスクリーンアップ、フルバックアップは毎日。ほかの処理は適宜…という感じでしょうか?

メンテナンスのログや履歴のクリーンアップ間隔はもっと短くても(2,3日くらいで)問題ないでしょう。これはデータベースの完全バックアップですが、これだと大きな規模のリポジトリだと夜中にやらないと重くなります。また、突然死んだときなくに泣けないので、たとえばお昼ごろとか夕方に差分バックアップを取っておけばより安心です。上の図の「データベースのバックアップ」のところで、SQL Serverの「トランザクションログをバックアップ」にするだけになります。
トランザクション ログのバックアップ (SQL Server)
過去の履歴はフルバックアップのジョブで削除することになるので気にする必要はないでしょう。