我有一个我为客户开发的ASP.NET MVC应用程序。 MVC 5,EF 6.
Web服务器和数据库服务器是分开的。突然从数据库服务器中删除了一堆数据。用户没有执行删除功能。是否有任何情况会导致这种情况?记录似乎是随机的。没有存储过程,触发器等....运行。该应用程序运行良好数月。 SQL Server(2014版)将删除表中记录的任何情况?没有向用户显示错误。
****更新****
我最近推出的唯一“删除”相关代码就是这个......
[Authorize]
public class WorkResultsController : Controller
{
private readonly ABC_WorkingContext db = new ABC_WorkingContext();
public ActionResult DeleteEvent(int id, bool? performRedirectAfterDelete = true)
{
if (!WorkFormServices.IsEditOrDeleteEnabled(id)) return this.HttpNotFound();
var @event = this.db.Events.Find(id);
try
{
// first remove any Work questions related to this event
var WorkResultsToDelete = this.db.WorkResults.Where(e => e.EventId == id).ToList();
foreach (var row in WorkResultsToDelete) this.db.WorkResults.Remove(row);
this.db.Events.Remove(@event);
this.db.SaveChanges();
if (performRedirectAfterDelete == true) return this.RedirectToAction("Index", "WorkScheduler");
return this.Json(
new { success = true, responseText = "Delete success!" },
JsonRequestBehavior.AllowGet);
}
catch (Exception)
{
return this.Json(
new { success = false, responseText = "Delete failed!!" },
JsonRequestBehavior.AllowGet);
}
}
我想只删除与特定ID相关的WorkResults记录。所以,我相信这是正常的。您是否看到可能发生的任何意外删除?
答案 0 :(得分:3)
我同意Min - 一个DB不会删除数据。这很可能是代码(应用程序或数据库方面)问题或某种违规行为。
我会检查:
答案 1 :(得分:2)
首先,没有商业数据库自行删除随机数据。如果它确实删除了其客户的数据,其制造商将被客户起诉。
因此,在某些地方有DELETE查询或有人在SQL SERVER Studio上执行DELETE操作。您可以监视数据库查询。检查您的查询并查找删除数据的查询。并询问DBA或DB Operator是否执行了一些查询。
根据我的经验,没有“没有这样的查询”。