我有一个恢复数据库的程序。基本上,程序从文件读取并一次恢复一个数据库。该程序每个数据库运行1次。我需要一种方法来重复这个,直到所有数据库都恢复。即使数据库还原不成功,我也需要重复该过程,直到尝试恢复所有数据库。我正在考虑让另一个程序调用我刚才提到的程序。所以像这样:
public const string databaseAttemptedRestore = "C:\\Logs\\AttemptedDatabaseRestore.log";
public const string databasesToRestore = "C:\\Logs\\DatabasesToRestore.log";
static void Main(string[] args)
{
//Repeats restore, reading from databasesToRestore. Needs to be called by task scheduler
Action toRepeat = () =>
{
var proc = new Process();
//database restore program
proc.StartInfo.FileName = @"C:\Projects\DbRestoreProdConsole\bin\Debug\DbRestoreProdConsole.exe";
// set up output redirection
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.EnableRaisingEvents = true;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.WorkingDirectory = @"C:\Windows\SysWOW64";
// see below for output handler
proc.Start();
proc.WaitForExit();
};
double lineCount = File.ReadLines(databasesToRestore).Count();
double repeat = Math.Ceiling(lineCount / 2);
Enumerable.Range(0, (int)repeat).ToList().ForEach(i => toRepeat());
}
}
}
我正在尝试找出这个重复过程的最佳解决方案,我可以跟踪错误并顺利运行程序等。该程序在数小时后运行,因此它不需要是一个快速运行的程序。我每晚要恢复的大多数数据库大约是8,但通常每晚1或2。非常感谢任何建议。谢谢。