matsukawar’s blog

個人的な技術ブログです。SAPネタを充実したい。Twitter : https://twitter.com/matsukawar

SQL Serverに格納されているTFSのタスクをサクッとみる

TFSとSQLServerの理解を深めるため実験してみました。SQL Server初心者のため、問題点や改善案があればコメントお願いしますm(_ _)m

以前、TFSのAPIを実験で使用したときに接続時間を感じたので、Windows Power Shellを使用して直接SQL Serverからデータを覗いてみようと思いました。SQL Serverからダイレクトにデータを取れるかな、と。やっぱり、データベースからダイレクトにデータを取るので、速度はかなり早いと思います。

TFSの情報をDBから取得する方法としては、TFSにはあらかじめビューが数多く用意されていて、それらを使うことで、TFSのいろんな情報を取得できそうです。
各種ビューは、プロジェクトコレクションの下のViewsにあります。
TFSのデータベースサーバ(標準構成ではTFSと同じサーバ)にログオンして、コマンドラインから

sqlps
cd SQL\[サーバ名]\[データベース名]\Databases\[プロジェクトコレクション名]\Views

(例:cd SQL\MYSERVER\SQLEXPRESS\Databases\Tfs_DefaultCollection\Views)
dir
ずらずらViewが出る

この中に、WorkItemsAsOfというビューがあります。
このビューを実行することで、プロジェクトコレクションのタスクが取得できます。

Invoke-sqlcmd -query "select * from dbo.WorkItemsAsOf"
ずらずらタスクが出る

このビューを実行して出力される情報のうち、タスク1つで以下の情報が出力されます。
(※以下は、サンプルで追加したバグ。)

System.PersonId : 9
System.ChangedOrder : {0, 0, 0, 0...}
System.IterationPath : \\DefaultProject1\Project Iteration\イテレーション 1
System.HyperLinkCount : 0
System.AttachedFileCount : 0
System.ExternalLinkCount : 0
System.RelatedLinkCount : 2
System.RevisedDate : 2012/02/25 16:34:23
System.AuthorizedAs : [ユーザ名]
System.Id : 9
System.Rev : 1
System.AreaId : 1
System.State : アクティブ
System.ChangedBy : [ユーザ名]
System.Reason : 新規
System.AssignedTo :
System.CreatedDate : 2012/02/25 16:34:13
System.CreatedBy : [ユーザ名]
System.ChangedDate : 2012/02/25 16:34:13
System.IterationId : 5
System.WorkItemType : バグ
System.TeamProject : DefaultProject1
System.NodeName : DefaultProject1
System.AreaPath : \\DefaultProject1
System.Title : 軽度のバグ003
Microsoft.VSTS.Common.StateChangeDate : 2012/02/25 16:34:13
Microsoft.VSTS.Common.ActivatedDate : 2012/02/25 16:34:13
Microsoft.VSTS.Common.ActivatedBy : [ユーザ名]
Microsoft.VSTS.Common.ResolvedDate :
Microsoft.VSTS.Common.ResolvedBy :
Microsoft.VSTS.Common.ResolvedReason :
Microsoft.VSTS.Common.ClosedDate :
Microsoft.VSTS.Common.ClosedBy :
Microsoft.VSTS.Common.Priority : 2
Microsoft.VSTS.Common.Severity : 3 - 中
Microsoft.VSTS.Common.StackRank :
Microsoft.VSTS.Build.IntegrationBuild :
Microsoft.VSTS.Build.FoundIn :
Microsoft.VSTS.Common.Issue :
Microsoft.VSTS.Common.Activity :
Microsoft.VSTS.Scheduling.RemainingWork :
Microsoft.VSTS.Scheduling.OriginalEstimate :
Microsoft.VSTS.Scheduling.CompletedWork :
Microsoft.VSTS.Scheduling.StartDate :
Microsoft.VSTS.Scheduling.FinishDate :
Microsoft.VSTS.TCM.AutomatedTestName :
Microsoft.VSTS.TCM.AutomatedTestStorage :
Microsoft.VSTS.TCM.AutomatedTestId :
Microsoft.VSTS.TCM.AutomatedTestType :
Microsoft.VSTS.TCM.AutomationStatus :
Microsoft.VSTS.Scheduling.StoryPoints :
Microsoft.VSTS.Common.Risk :
Microsoft.VSTS.Scheduling.DueDate :

簡単なオーバービュー的な情報はあることが分かります。
「新規」とか「中」って日本語で格納されているみたいですね。