How to backup a LocalDB database under an MVC 4 sytem
UPDATE: EntityFramework 6 has lots of Resiliency enhancements, but one of the side effects is that this needs a tweak to keep EF from spinning up a transaction around the SQL statement. Essentially, you have to call ExecuteSqlCommand and request that it does NOT ensure the a transaction exists with the first parameter of TransactionalBehavior.DoNotEnsureTransaction. If still running EF 5 or below, omit that argument.
I have a smallish MVC 4 site with a database. In this case it isn't worthy of a dedicated SQL Server, so I decided to try out the new LocalDb database feature.
While the database isn't particularly mission critical, I would like to be able to easily back it up on demand to allow some level of disaster recovery.
So, without further adéu, I give you:
namespace SomeSimpleProject.Controllers
{
[Authorize(Roles="Admin")]
public class BackupController : Controller
{
public ActionResult BackupDatabase()
{
var dbPath = Server.MapPath("~/App_Data/DBBackup.bak");
using (var db = new DbContext())
{
var cmd = String.Format("BACKUP DATABASE {0} TO DISK='{1}' WITH FORMAT, MEDIANAME='DbBackups', MEDIADESCRIPTION='Media set for {0} database';"
, "YourDB", dbPath);
db.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction, cmd);
}
return new FilePathResult(dbPath, "application/octet-stream");
}
}
}
3 comments:
Just what I need but you didn't include the required references. Thanks!
This is what i was looking for, plus it has the entity framework base.
Thanks a lot!!
This is exactly what i need even in the entity framework base.
Thanks a lot!
Post a Comment