我的Asp.net核心应用程序通过cmd运行命令来执行数据库备份(Postgree v13)。根据例程,一些参数被传递给函数并执行备份,但如果在过程中出现问题并损坏,则没有返回参数来通知这一点(至少到目前为止是这样)。Hj我在一个客户端的系统中遇到了这个问题,这个客户端在格式化服务器之前发誓要做一个备份,但当他去恢复它时,它被损坏了。这是非常尴尬的!
问题:
1-有没有办法确保创建的备份完好无损?2-有没有办法让pg_dump返回一个参数,这样我就可以处理返回并防止生成损坏的备份或显示错误消息?
public string CreateBackup(string usuario, string senha, string servidor, string porta, string nomeBancoDados, string nomeArquivo, string diretorioComando, string diretorioBackup)
{
try
{
var pathString = Path.Combine(Directory.GetCurrentDirectory(), $"wwwroot\\" + diretorioBackup);
//Verificar se existe a pasta downloads
if (!Directory.Exists(pathString))
{
Directory.CreateDirectory(pathString);
}
Environment.SetEnvironmentVariable("PGPASSWORD", senha);
string fileName = nomeArquivo + "_" + DateTime.Now.ToString("dd") + "_" + DateTime.Now.ToString("MM") + "_" + DateTime.Now.ToString("yyyy") + "_" + DateTime.Now.ToString("HH-mm") + ".backup";
string backupFile = pathString + "\\" + fileName;
string BackupString = "-Ft -U " + usuario + " -h " + servidor + " -f " + backupFile + " " + nomeBancoDados;
Process proc = new Process();
proc.StartInfo.FileName = "C:\\Program Files\\" + diretorioComando + "\\pg_dump.exe";
proc.StartInfo.Arguments = BackupString;
proc.Start();
proc.WaitForExit();
proc.Close();
return fileName;
}
catch (Exception)
{
return null;
}
}发布于 2021-11-05 11:14:29
完成后获取进程的ExitCode。
如果为0,则pg_dump已成功完成。如果不是,则存在错误。
https://stackoverflow.com/questions/69851856
复制相似问题