Tenemos varias aplicaciones web de producción de alto uso que se ejecutan en FGDB en el back-end. Los FGDB se aniquilan y se reconstruyen con datos nuevos todas las noches. Tenemos una aplicación de consola .NET que escribí que se basa en AGSSOM que detiene los servicios mientras se ejecuta el proceso de actualización. Mira AGSSOM, es bastante elegante. Aquí hay algunos de los C # que uso para hacer una copia de seguridad de la FGDB actual antes de eliminarla:
// 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);
}
}
}
Simplemente usa Directory.CreateDirectory y FileInfo.CopyTo para copiar el FGDB: Windows ve el FGDB como una carpeta más. Funciona como un campeón. Luego, una vez que se completa el proceso de actualización, comenzamos los servicios nuevamente usando la aplicación basada en AGSSOM.