Temos vários aplicativos da Web de produção de alto uso que são executados em FGDBs no back-end. Os FGDBs são eliminados e reconstruídos com novos dados todas as noites. Escrevemos um aplicativo de console .NET que escrevi baseado no AGSSOM que interrompe os serviços enquanto o processo de atualização é executado. Confira AGSSOM, é muito liso. Aqui estão alguns dos C # que eu uso para fazer um backup do FGDB atual antes que eu o exploda:
// Only archive it FGDB already exists, if this is first run, then nothing to archive
if (Directory.Exists(String.Concat(c.fgdbDir, @"\", kvp.Key[0], ".gdb")))
{
c.msg = String.Concat(Environment.NewLine, "Archiving data for ", kvp.Key[0], " - ",
DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss tt"));
Messaging.Log(c.msg, c.lw);
// Create the FGDB folder in archive dir if not already there
if (!Directory.Exists(String.Concat(c.fgdbArchiveDir, @"\", kvp.Key[0], ".gdb")))
{
Directory.CreateDirectory(String.Concat(c.fgdbArchiveDir, @"\", kvp.Key[0], ".gdb"));
// Now copy from clips to archive
foreach (FileInfo fi in source.GetFiles())
{
fi.CopyTo(System.IO.Path.Combine(target.ToString(), fi.Name), true);
}
}
}
Ele apenas usa Directory.CreateDirectory e FileInfo.CopyTo para copiar o FGDB - o Windows vê o FGDB como apenas outra pasta. Funciona como um campeão. Depois que o processo de atualização estiver concluído, reiniciaremos os serviços usando o aplicativo baseado em AGSSOM.