tfsbuild.exe удаляет / уничтожают, сохраняет висячие строки в базе данных

Мы используем 2012 TFS с 2013. Тем временем база данных увеличилась до ~60GB. Это имеет несколько недостатков как увеличенное время резервного копирования, WAST дискового пространства...

После того, чтобы взглянуть в к 'Использованию диска Главными столами' сообщают, что я распознал что tbl_BuildInformation таблица была аварийно завершена. 46 ГБ из 60 ГБ используются для хранившего/архивирования прошлой информации о сборке (сборка регистрируются так на). И у нас нет абсолютно никакой цели больше использовать эту информацию.

Поэтому я следовал за предложениями на форумах MSDN, как действительно чистят их. Я применил две команды (tfsbuild.exe delete ... и tfsbuild.exe destroy ...) к нашему серверу TFS. Почти после 1,5 ч была успешно сделана очистка. Таблица уважения не изменилась, все же. Но почти все записи являются висячими строками без ссылки на дальнейшую информацию больше.

Относительно других источников это поведение распространено и предназначено. Но по-моему абсолютно ерунда и бесполезный. Я сделал это ступает для получения чистой и shrinked базы данных.

Какие-либо идеи или рекомендации, как избавиться от этого? На самом деле я мог удалить осиротевшие записи в базе данных с SQL-запросом, но эксперты советуют строго против того относительно неожиданного поведения. Каковы Ваши события?

1
задан 22 May 2015 в 10:31
1 ответ

Нужно подождать, пока не запустится "Задание очистки информации о сборке" (по умолчанию оно запускается каждые два дня). Это задание очищает tbl_buildInformation после запуска TFSBuild.exe delete и TFSBuild.exe destroy.

Вы можете проверить его расписание с помощью (в PowerShell):

$collection = "http://yourservername:8080/tfs/YourCollection" # change this to the URL of your team project collection
$pathToAss2 = "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ReferenceAssemblies\v2.0"
$pathToAss4 = "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ReferenceAssemblies\v4.5"
Add-Type -Path "$pathToAss2\Microsoft.TeamFoundation.Client.dll"
Add-Type -Path "$pathToAss2\Microsoft.TeamFoundation.Common.dll"
Add-Type -Path "$pathToAss2\Microsoft.TeamFoundation.WorkItemTracking.Client.dll"
Add-Type -Path "$pathToAss2\Microsoft.TeamFoundation.VersionControl.Client.dll"
Add-Type -Path "$pathToAss4\Microsoft.TeamFoundation.ProjectManagement.dll"
$tpc =  [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($collection)
$jobService = $tpc.GetService([Microsoft.TeamFoundation.Framework.Client.ITeamFoundationJobService])
$job = $jobService.QueryJobs() | Where-Object {$_.Name -eq "Build Information Cleanup Job"}
$job
$jobService.QueryLatestJobHistory([Guid[]] @($job.JobId))

Чтобы поставить задание в очередь на немедленный запуск, выполните предыдущие команды, а затем следующую команду:

$jobService.QueueJobNow([Guid] $job.JobId, $false)

Чтобы изменить расписание, выполните его:

$interval = 172800 # change this to the number of seconds between each run; 172800 = 2 days
$job.Schedule[0].Interval = $interval # there is only one schedule for the build information clean-up job, we set its interval
$jobService.UpdateJob($job)

Чтобы увидеть, когда запланирован следующий запуск этого задания, нужно зайти в БД и выполнить следующий запрос (запрос не совсем корректен, потому что в колонках "ScheduledTime" и "Interval" показана информация Tfs_YourCollection для всех перечисленных коллекций, другая информация корректна, особенно QueueTime):

USE Tfs_YourCollection
SELECT S.JobId, D.JobName, S.ScheduledTime, S.Interval, CQ.QueueTime, SH.Name
FROM tbl_JobSchedule S
LEFT OUTER JOIN tbl_JobDefinition D ON D.JobId = S.JobId
LEFT OUTER JOIN [Tfs_Configuration].dbo.tbl_JobQueue CQ ON CQ.JobId = S.JobId
LEFT OUTER JOIN [Tfs_Configuration].dbo.tbl_ServiceHost SH ON SH.HostId = CQ.JobSource
WHERE D.JobName = 'Build Information Cleanup Job'

См. http://blogs.msdn.com/b/chrisid/archive/2010/02/15/introducing-the-tfs-background-job-agent-and-service.aspx и http://blogs.msdn.com/b/granth/archive/2013/02/13/tfs2012-what-are-all-the-different-jobs-built-in-to-tfs.aspx для дополнительной информации.

.
2
ответ дан 3 December 2019 в 20:52

Теги

Похожие вопросы