Annoyed by TF276000 error?
28 May 2015 - Giulio Vian - ~2 Minutes
Annoyed by this error?
[Full Analysis Database Sync]:
TF276000: The current Analysis Database Sync job has exited without making any changes. Either another Analysis Database Sync job is already in progress, or the Analysis Database Sync job cannot run because an Optimize Databases job is running. The next Analysis Database Sync job will start at its scheduled time.
It shows up in the Cube Status report of the Administrative Report Pack , and you are using them, aren’t you?
Solution 1 - Move the Full Analysis Database Sync to a later time
Connect to one of your Application Tier servers; open the page at
http://localhost:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx and select ChangeSetting
.
For settingId
input DailyFullProcessingTime
, for newValue
set 03:00:00.0000000
, which is local time,
as shown in the picture.
Now, click the Invoke button: it will open another page or tab with similar content.
<string xmlns="http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Controller/03">
The setting DailyFullProcessingTime has been successfully changed to 03:00:00.0000000+02:00.
</string>
Note in this example the +02:00 string, corresponding to CEST (Central European Summer Time) , our TFS local time.
Solution 2 - Change the Optimize Databases schedule
This time there is no simple user interface, must usewrite some code as explained in the forum https://social.msdn.microsoft.com/Forums/vstudio/en-US/52bef4ac-80f0-464d-8fcc-9e24ddd7fffb/warehouse-optimize-databases-job-runs-at-wrong-time?forum=tfsadmin.
I converted it to Powershell for easier consumption.
param(
$tfsUrl = "http://localhost:8080/tfs",
$newSchedule = (Get-Date -Year 2015 -Month 1 -Day 1 -Hour 3 -Minute 0 -Second 0)
)
function Get-TFSCollection(
[Parameter(Mandatory=$True)]
[Uri] $collectionurl,
[Parameter(Mandatory=$False)]
[string[]] $assemblies = @()
)
{
if (Test-Path "HKLM:\SOFTWARE\Microsoft\TeamFoundationServer") {
$highestTFSversion = "{0:N1}" -f (Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft\TeamFoundationServer" | Split-Path -Leaf | foreach { $_ -as [double] } | sort -Descending | select -First 1)
$tfsClientVersion = ", Version=$highestTFSversion.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
[void][System.Reflection.Assembly]::Load("Microsoft.TeamFoundation.Client"+$tfsClientVersion)
$assemblies | foreach {
[void][System.Reflection.Assembly]::Load($_+$tfsClientVersion)
}#for
return [Microsoft.TeamFoundation.Client.TfsTeamProjectCollectionFactory]::GetTeamProjectCollection($collectionurl)
}#if
}
$server = Get-TFSCollection $tfsUrl
$jobService = $server.GetService([Microsoft.TeamFoundation.Framework.Client.ITeamFoundationJobService])
$jobs = $jobService.QueryJobs()
$exist = $false
foreach ($job in $jobs)
{
if ($job.Name -eq "Optimize Databases")
{
# Only one job is necessary
if ($exist)
{
$jobService.DeleteJob($job)
continue
}
$optimizeDatabasesJob = $job
$optimizeDatabasesJob.Schedule.Clear()
$schedule = New-Object -TypeName 'Microsoft.TeamFoundation.Framework.Client.TeamFoundationJobSchedule' -ArgumentList $newSchedule,86400
$schedule.TimeZone = [TimeZoneInfo]::Local
$optimizeDatabasesJob.Schedule.Add($schedule)
$jobService.UpdateJob($optimizeDatabasesJob)
$exist = $true
}#if
}#for
The less errors, the better, isn’t it?