azukipochette's weblog

memory dump (mini)

Azure DevOps Server または Team Foundation Server でエラーが出たのを調査するときの話

私が参考にしていた公式の解説ブログ記事が MSDN ブログ廃止の影響を受けて消えてしまったので、主に自分向けのメモとして記事にすることにした。

管理ツール (_oi) を確認する

Team Foundation Server 2012 以降では管理ツールが統合され、_oi でアクセスできる。これは、Azure DevOps Server でも変わらない。

devblogs.microsoft.com

管理ツールにアクセスするには、自身の Team Fondation Server または Azure DevOps Server の URL に加えて /_oi を足した URL にアクセスすればよい。*1 以下に URL 例を示す。

Team Foundation Server 2012 - 2018 の場合 :

http://yourservername:8080/tfs/_oi

Azure DevOps Server 2019 以降を新規に構築した場合 :

https://yourservername/_oi

アクテビティログを確認する

Team Foundation Server および Azure DevOps Server には内部的にアクテビティ ログを保存する仕組みがある。 問題が発生しているチーム プロジェクト コレクション (TPC) のデータ ベースに対して、以下のクエリを実行すると取得できる。

    SELECT *
    FROM tbl_command c
    LEFT JOIN tbl_parameter p ON c.commandid = p.commandid

なお、サーバー全体に対するアクテビティは "Configuration" データベースに含まれることがある (プロジェクト コレクションの作成など) 。

(補足) データベース名の既定は Team Foundation Server 2018 までは Tfs_* だったが、Azure DevOps Server 2019 以降の既定は AzureDevOps_* に変更されている。Team Foundation Server 2018 以前のバージョンから移行した場合は、引き続き Tfs_* が使われるが、新規に構築した場合は違いがあるので、プロジェクトコレクション名 to データベース名などの変換をスクリプトで自動化している場合は注意するとよい。

イベント ログを確認する

Team Foundation Server および Azure DevOps Server には内部でエラーが発生するとイベントログに記録する仕組みがある。 ほとんどのケースでは、アプリケーション ログに TFS Services の名前で記録される。なお、Azure DevOps Server でも名前は同じである。

*1:なぜか、管理画面などからリンクされていないので、管理者の間では "秘密のツール" ということになっているとか、いないとか。