azukipochette's weblog

memory dump (mini)

Azure DevOps Server 2019 向け管理クエリ

チーム プロジェクト コレクション単位で使用容量を調べる

以下のクエリを実行する。

USE master
SELECT DB_NAME(database_id) AS DBName, 
       (SIZE / 128) SizeInMB 
FROM sys.master_files WITH (NOLOCK) 
WHERE TYPE = 0 
  AND SUBSTRING(DB_NAME(database_id), 1, 12) = 'AzureDevOps_' 
  AND DB_NAME(database_id) <> 'AzureDevOps_Configuration' 
ORDER BY SIZE DESC 

なお、Azure DevOps Server 2019 を新規で構築した場合、DB の Prefix は AzureDevOps_ だが、Team Foundation Server 2018 以前からアップグレードした場合は Tfs_ となる。
Team Foundation Server 2018 以前からアップグレートしている場合は、以下のクエリを実行する。

USE master
SELECT DB_NAME(database_id) AS DBName,
       (size / 128) SizeInMB
FROM sys.master_files WITH (NOLOCK)
WHERE type = 0
  AND SUBSTRING(DB_NAME(database_id), 1, 4) = 'Tfs_'
  AND DB_NAME(database_id) <> 'Tfs_Configuration'
ORDER BY size DESC

Git リポジトリ毎に使用容量を調べる

下記のクエリを各チーム プロジェクト コレクション DBで実行する。

SELECT r.Name, 
       COUNT(*) AS FileCount, 
       SUM(fm.FileLength) AS FileSize, 
       SUM(fm.CompressedLength) AS FileCompressedSize 
FROM tbl_GitRepository AS r WITH (NOLOCK) 
JOIN tbl_Container AS c WITH (NOLOCK) ON c.ArtifactUri = ('vstfs:///Git/GitOdbStorage/' + LOWER(REPLACE(CAST(r.ContainerId AS varchar(36)), '-', ''))) 
JOIN tbl_ContainerItem AS i WITH (NOLOCK) ON c.ContainerId = i.ContainerId 
JOIN tbl_FileReference AS fr WITH (NOLOCK) ON i.FileId = fr.FileId 
JOIN tbl_FileMetadata AS fm WITH (NOLOCK) ON fr.ResourceId = fm.ResourceId 
GROUP BY r.Name