TFS構成DBからプロジェクト コレクション名を列挙する
またまたTFSネタです。
TFSのDBをバックアップする上で、プロジェクト コレクション名が必要だったのですが、TFSが現在管理しているプロジェクト コレクション名を全て取得する方法って無いのかな―と調べていました。
結果から言うとそれっぽい情報は無かったので、色々試してみた結果、以下の方法でそれっぽく取得することができました。
動作環境には"Team Foundation Server 2012"を使用しています。
まずは、SQL Server Management Studio を起動してTFSの管理しているインスタンスに接続します。
そこでクエリエディタを表示して以下のSQLクエリを入力して実行すると、TFSの持つリソース情報が表示されます。
SELECT * FROM [Tfs_Configuration].[dbo].[tbl_CatalogResource]
実行結果
”DisplayName”列にところどころプロジェクト コレクション名が見えるのですが、どうやって取得するか…
しばし悩んだところで、以下のテーブルに[Identifier]列の定義があったのでこれを使います。
SELECT * FROM [Tfs_Configuration].[dbo].[tbl_CatalogResourceType]
実行結果
上図の赤枠線で囲っているところがチーム プロジェクト コレクションのリソース識別子っぽいです。
では、以下のSQLを実行してみましょう。
SELECT * FROM [Tfs_Configuration].[dbo].[tbl_CatalogResource] WHERE [tbl_CatalogResource].[ResourceType]=<Identifier>
これでチーム プロジェクト コレクションの一覧を全て取得することができました。
tbl_CatalogResourceTypeテーブルの[Identifier]列は、リソース種別の識別子なのでtbl_CatalogResourceテーブルの[Identifier]列とは一致しません。
[ResourceType]列と比較することでリソースの種別を識別することが可能になっています。