从我的sql数据库中自动删除一些记录

时间:2014-04-17 11:53:03

标签: c# asp.net sql sql-server

在我的数据库中我遇到了问题。问题是,在一两天后,我发现一些记录丢失,我或任何用户都没有删除。如何解决这个问题请帮忙

就像我当时输入的数据一样,我的数据就是这个

Enquiry_Id          Day_No   Ckeck_In         Destination
RH - 07/11/2013 - 1   1     2013-12-23           Cochin
RH - 07/11/2013 - 1   2     2013-12-24           Munnar
RH - 07/11/2013 - 1   3     2013-12-25           Kovalam
RH - 14/11/2013 - 2   1     2013-11-21           Thekkady
RH - 14/11/2013 - 2   2     2013-11-22           Munnar
RH - 14/11/2013 - 2   3     2013-11-23           Cochin

1或2天后,一些记录丢失

    Enquiry_Id      Day_No   Ckeck_In         Destination
RH - 07/11/2013 - 1   1     2013-12-23           Cochin
RH - 07/11/2013 - 1   2     2013-12-24           Munnar
RH - 07/11/2013 - 1   3     2013-12-25           Kovalam
RH - 14/11/2013 - 2   1     2013-11-21           Thekkady
RH - 14/11/2013 - 2   3     2013-11-23           Cochin
像第2天一样,我正在使用asp.net(C#)。请帮我解决这个问题。

3 个答案:

答案 0 :(得分:0)

永远不会自动删除数据。它必须是特定的东西。

以下是可能造成问题的一些原因。

  1. 检查您的删除查询,看看该查询的where子句是否完美,还是删除其他数据。
  2. 检查可能更新/删除此数据的后台任务或作业。
  3. 检查代码中是否存在其他删除查询的问题。

答案 1 :(得分:0)

那是一个奇怪的问题。我会尝试在表上实现一些日志记录,我可以看到两种方式: 1)在表上创建一个删除触发器,将日期戳和用户标记写入某个自定义日志记录表。这种方法可以提供一些基本细节。 2)打开服务器审核(SQL Server Audit)。这可能非常麻烦,但如果没有其他想法......

另外,我会检查表依赖项以找到可以从此表中删除的所有SP,这是遗忘的东西:)

答案 2 :(得分:0)

我同意Jalphesh,但如果数据保持至关重要,那么您可以使用“INSTEAD OF DELETE TRIGGER”来阻止它,它应该在发生错误时引发错误。您还可以在数据库上运行trace /(Profiler)以突出显示。触发下方:

CREATE TRIGGER IO_Trig_DEL_Enquiry ON Enquiry
INSTEAD OF DELETE
AS
BEGIN
    RAISERROR ('DONT DO THIS', -- Message text.
               16, -- Severity.
               1 -- State.
               );
END

一旦解决所有问题,删除触发器(显然)。您也可以将一些服务器信息写入数据库表以获取上下文。