About Test Attachment Cleaner

by Xavier Dilip Kumar 30. January 2014 11:37


A command line tool that only removes the attachments. It does not touch the test runs, which contain the pass/fail data. So, running Test Attachment Cleaner will not impact the record of the test runs.

You need to Test Attachment Cleaner if you:

  1. Do manual test runs and want to delete attachments without deleting the test runs
  2. Do automated test runs and want to delete attachment for builds which have been deleted already, but the build definition’s retention policy was not set to delete “test results” (because this is turned off by default)

You do not need the Test Attachment Cleaner if you:

  1. Have automated test runs triggered by a build, and you have configured the build definition’s retention policy to delete “test results” (which is not set by default)
  2. Delete the Test Runs manually (as this deletes the attachments)

 SQL Query to get the attachment type associated with the team project.

Select projects.ProjectName, SUBSTRING(attachments.filename,

len(attachments.filename)-CHARINDEX('.',REVERSE(attachments.filename))+2,999) as Extension, sum(f.compressedlength)/1024/1024 as SizeInMB
From tbl_Attachment as attachments
INNER JOIN tbl_File as f on attachments.TfsFileId=f.fileid
INNER JOIN tbl_TestRun as tr on attachments.TestRunId = tr.TestRunId
INNER JOIN tbl_Project as projects on tr.ProjectId = projects.ProjectId
Group by projects.ProjectName, SUBSTRING(attachments.filename,len(attachments.filename)-CHARINDEX('.',REVERSE(attachments.filename))+2,999)
Order by sum(f.compressedlength) desc

Download Attachment Cleaner

Command to preview the attachments before delete
tcmpt attachmentcleanup /collection:TfsUrl /teamproject:TeamProjectName /settingsfile:SettingsFile /outputfile
:<Output dir>/teamproject.log /mode:preview
Command to delete the attachments
tcmpt attachmentcleanup /collection:TfsUrl /teamproject:TeamProjectName /settingsfile:SettingsFile /outputfile:<Output dir>/teamproject.log

Sample settingsfile

    <SizeInMB GreaterThan="50"/>   


MTM | TFS 2010 | TFS 2012 | TFS 2013

How to delete orphan workspaces and shelvesets from TFS team collection database?

by Xavier Dilip Kumar 20. December 2013 07:17

Todeleteorphanworkspaces.sql (2.93 kb)


To delete orphan workspaces.sql (2.93 kb)


Deleting a team project through tfsdeleteproject command will result making the associated workspaces and shelvesets as orphan records in TFS collection database. The collection database size may not reduce as expected even after team project delete. 

tfsdeleteproject /force /q /excludewss /collection:"<Collection Name>" "<Project Name>"


The attached script finds and deletes the workspaces\shelvesets that only have workspace\shelvesets mappings for projects that no longer exist and delete them. 

Please backup the collection database before you execute the script.

This script require TFS 2012 update 2 or newer

To delete orphan workspaces.sql (2.93 kb)

To delete orphan shelvesets.sql (2.58 kb)


TFS | SQL Server


by Xavier Dilip Kumar 21. December 2008 13:38
[No text]

Tags: , ,

About the author

My name is Xavier Dilip Kumar Jayaraj and I am a Software Configuration Management Engineer with a background in application development, Build & packaging using Install Shield.

Profile in LinkedIn


Quotes I Like

"Failure will never overtake me if my determination to succeed is strong enough."  - Dr. APJ. Abdul Kalam

"Always be yourself, express yourself, have faith in yourself, do not go out and look for a successful personality and duplicate it." - Bruce Lee

"Technology is just a tool. In terms of getting the kids working together and motivating them, the teacher is the most important." - Bill Gates

"Innovation distinguishes between a leader and a follower." - Steve Jobs


The information provided here is based on my expreriences, troubleshooting and online/offline findings. It can be used as is on your own risk without any warranties and I impose no rights.

Month List