Microsoft Team Foundation Server Express 2012 - 如何清理tbl_TestResult(旧测试结果)

问题描述 投票:3回答:4

我安装了Microsoft Team Foundation Server Express 2012。

表tbl_TestResult正在耗尽7000 MB的数据库空间。

我试图找到有关如何清理此表的信息,但没有办法这样做。

当我想将新文件签入TFS时,我得到错误TF30042:数据库已满...

在Visual Studio上我删除了所有可见的测试,但tbl_TestResult的大小只是减少了很少。

谁能向我解释如何以正确的方式清理所有测试结果?

tfs tfs2012
4个回答
2
投票

我正在使用TFS客户端API删除旧的测试运行。这是一些示例代码:

TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri("http://tfs2012:8080/tfs/DefaultCollection/"));

TestManagementService testManagementService = tpc.GetService<TestManagementService>();

ITestManagementTeamProject teamProject = testManagementService.GetTeamProject("MyProject");

int totalRuns = teamProject.TestRuns.Count("SELECT * FROM TestRun");

// Limit by date, so the query doesn't take too long.
string query = "SELECT * FROM TestRun WHERE CreationDate < '2013/07/01'";
int numTotalToDelete = teamProject.TestRuns.Count(query);

if (numTotalToDelete == 0) { return; }

// Only delete 500 at a time, to give SQL Server time to breathe (don't ask).
var runsToDelete = teamProject.TestRuns.Query(query, false)
                              .Take(500);
teamProject.TestRuns.Delete(runsToDelete);

查询语法来自:http://blogs.msdn.com/b/duat_le/archive/2010/02/25/wiql-for-test.aspx


1
投票

对于我们的前期TFS,我们遇到了同样的问题。这就是我们为TFS 2015做到2017年TFS的方式。

  1. 安装Microsoft Visual Studio Team Foundation Server 2015 Power Tools以访问Test Attachment Cleaner(TAC),tcmpt.exe。
  2. 它安装到c:\Program Files (x86)\Microsoft Team Foundation Server 2015 Power Tools
  3. TAC的示例设置位于<INSTALL_DIR>\TestAttachmentCleaner_samples_settingsfile的安装文件夹中
  4. 创建自己的设置文件,例如all-100mb.xml文件:
<DeletionCriteria>
<TestRun>
    <Created Before="2016-01-01" />
</TestRun>
<Attachment>
    <Extensions>
    <Include value="wmv" />
    <Include value="xesc" />
    <Include value="trmx" />
    </Extensions>
    <!-- size in MB -->
    <SizeInMB GreaterThan="100" />
</Attachment>
<LinkedBugs>
    <Exclude state="Active" />
</LinkedBugs>
</DeletionCriteria>
  1. 上面的配置文件删除了大于100MB的非活动测试运行的测试附件,扩展名为:wmv,xesc,trmx。
  2. 尝试使用此命令查找结果:tcmpt.exe AttachmentCleanup /settingsfile:"all-100mb.xml" /mode:preview /collection:"https://tfs.contoso.com/DefaultCollection" /teamproject:"TeamProjectName" /outputfile:all-100mb.log"
  3. 这将生成一个非常详细的日志文件,其中包含您需要的关键信息,例如: ------------ Summary ------------ Number of attachments affected: 339 Total size of attachments: 39646,7 MB Elapsed time was 247,94 seconds
  4. 如果对结果满意,请执行以下操作: 如果使用MSSQL服务器,请关闭TFS数据库的事务日志。 如果不这样做,您可能会比删除测试附件更快地增加事务日志。
  5. 在没有tcmpt.exe参数的情况下运行/mode:preview命令以删除测试附件。
  6. 完成后,从TFS数据库运行这两个存储过程: EXEC dbo.prc_DeleteUnusedContent 1 EXEC dbo.prc_DeleteUnusedFiles 1, 0, 1000 存储过程从数据库中删除清空的行。 如果存储过程的持续时间不到1秒,请等待一段时间再重新运行它们。
  7. 然后,您可以选择缩小数据库。

祝它好运。


0
投票

如果删除不需要的版本,则会在删除时显示删除与版本关联的测试结果的选项。

您可能会发现测试附件也占用了大量空间,您可以使用随TFS电动工具提供的测试附件清洁器来移除这些附件。

TFPT可以找到here


0
投票

我现在只是通过Visual Studio支持删除所有Builds,然后我关闭TFS创建了TFS数据库的备份并截断整个表tbl_TestResult并再次启动TFS。

TFS没有抱怨,工作仍然很好。这解决了我的问题。 (虽然不推荐这种方法)

© www.soinside.com 2019 - 2024. All rights reserved.