in Source/NuGetGallery.Operations/Tasks/CopyDatabaseBackupTask.cs [38:81]
public override void ExecuteCommand()
{
using (var destinationConnection = new SqlConnection(Util.GetMasterConnectionString(DestinationConnectionString.ConnectionString)))
using (var destinationDbExecutor = new SqlExecutor(destinationConnection))
{
string sourceDbServerName = Util.GetDatabaseServerName(SourceConnectionString);
string destinationDbServerName = Util.GetDatabaseServerName(DestinationConnectionString);
destinationConnection.Open();
var copyDbName = string.Format("CopyOf{0}", BackupName);
var existingDatabaseBackup = Util.GetDatabase(
destinationDbExecutor,
copyDbName);
if (existingDatabaseBackup != null && existingDatabaseBackup.State == Util.OnlineState)
{
Log.Info("Skipping {0}. It already exists on {1} and is online.", copyDbName, destinationDbServerName);
return;
}
if (existingDatabaseBackup == null)
{
StartBackupCopy(
destinationDbExecutor,
sourceDbServerName,
destinationDbServerName,
BackupName,
copyDbName);
Log.Trace("Waiting 15 minutes for copy of {0} from {1} to {2} to complete.", BackupName, sourceDbServerName, destinationDbServerName);
if (!WhatIf)
{
Thread.Sleep(15 * 60 * 1000);
}
}
WaitForBackupCopy(
destinationDbExecutor,
destinationDbServerName,
copyDbName);
}
}