重复流程的最佳方式,即使失败也会继续

时间:2015-06-19 15:20:16

标签: c# asp.net process task database-restore

我有一个恢复数据库的程序。基本上,程序从文件读取并一次恢复一个数据库。该程序每个数据库运行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。非常感谢任何建议。谢谢。

0 个答案:

没有答案