やる気駆動型エンジニアの備忘録

WPF(XAML+C#)の話題を中心に.NET/Android/CI やたまに趣味に関するブログです

TFS構成DBからプロジェクト コレクション名を列挙する

またまたTFSネタです。
TFSのDBをバックアップする上で、プロジェクト コレクション名が必要だったのですが、TFSが現在管理しているプロジェクト コレクション名を全て取得する方法って無いのかな―と調べていました。
結果から言うとそれっぽい情報は無かったので、色々試してみた結果、以下の方法でそれっぽく取得することができました。

動作環境には"Team Foundation Server 2012"を使用しています。

まずは、SQL Server Management Studio を起動してTFSの管理しているインスタンスに接続します。
そこでクエリエディタを表示して以下のSQLクエリを入力して実行すると、TFSの持つリソース情報が表示されます。

SELECT * FROM [Tfs_Configuration].[dbo].[tbl_CatalogResource]

実行結果
f:id:iyemon018:20170111190710p:plain

”DisplayName”列にところどころプロジェクト コレクション名が見えるのですが、どうやって取得するか…
しばし悩んだところで、以下のテーブルに[Identifier]列の定義があったのでこれを使います。

SELECT * FROM [Tfs_Configuration].[dbo].[tbl_CatalogResourceType]

実行結果
f:id:iyemon018:20170111191024p:plain

上図の赤枠線で囲っているところがチーム プロジェクト コレクションのリソース識別子っぽいです。
では、以下のSQLを実行してみましょう。

SELECT * FROM [Tfs_Configuration].[dbo].[tbl_CatalogResource] WHERE [tbl_CatalogResource].[ResourceType]=<Identifier>

これでチーム プロジェクト コレクションの一覧を全て取得することができました。
tbl_CatalogResourceTypeテーブルの[Identifier]列は、リソース種別の識別子なのでtbl_CatalogResourceテーブルの[Identifier]列とは一致しません。
[ResourceType]列と比較することでリソースの種別を識別することが可能になっています。