在生产中发生的最严重的数据库事故是什么?

bin*_*nOr 5 database production

例如:更新customer表的所有行,因为您忘记添加where子句.

  1. 它是什么样的,实现它并向您的同事或客户报告?
  2. 从中学到了什么?

Sur*_*der 11

我认为我最大的错误是

truncate table Customers
truncate table Transactions
Run Code Online (Sandbox Code Playgroud)

我没有看到我登录的是什么MSSQL服务器,我想清除我的本地副本...熟悉的"OH s**t"当它删除时间大于半秒钟时,我的老板注意到我去了可见白色,问我刚做了什么.大约半分钟后,我们的网站监控器发疯了,并开始向我们发送电子邮件说该网站已关闭.

学过的知识?永远不要让连接开放的时间超过绝对需要的时间.

直到凌晨4点才恢复备份中的数据!我的老板为我感到难过,给我买了晚餐......

  • 我读到这篇文章时做的第一件事是关闭我与实时数据库服务器的开放SSMS连接...... (4认同)

Kei*_*ith 5

初级 DBA 的目标是:

delete from [table] where [condition]
Run Code Online (Sandbox Code Playgroud)

相反,他们输入:

delete [table] where [condition]
Run Code Online (Sandbox Code Playgroud)

这是有效的 T-Sql,但基本上完全忽略了 where [condition] 位(至少它在 MSSQL 2000/97 上确实如此 - 我忘记了)并擦除整个表。

蛮好玩的 :-/

  • 当然不是在 SQL Server 2000 上。没有 SQL Server 97 - 前身是 SQL Server 7。 (2认同)

Mar*_*all 5

我在一家小型电子商务公司工作,有2位开发人员和一位DBA,我是开发人员之一.我通常不习惯在动态更新生产数据,如果我们已经更改了存储过程,我们将它们通过源代码控制并进行正式的部署例程设置.

好吧无论如何,用户来找我需要对我们的联系人数据库进行更新,批量更新一堆设施.所以我在我们的测试环境中编写了查询,例如

update facilities set address1 = '123 Fake Street'
    where facilityid in (1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

这样的事情.在测试中,3行更新.将它复制到剪贴板,将其粘贴到我们的生产sql框中的终端服务中,运行它,惊恐地看着它花了5秒钟执行并更新了100000行.不知何故,我复制了第一行,而不是第二行,并没有像I CTRL+ V,CTRL+ E' 那样关注.

我的DBA,一位年长的希腊绅士,可能是我见过的最脾气暴躁的人并不激动.幸运的是我们有一个备份,并没有打破任何页面,幸运的是,该字段仅用于显示目的(和计费/运输).

吸取的教训是关注你正在复制和粘贴的内容,也可能是其他一些内容.


tra*_*vis 5

大约 7 年前,我在工作到很晚后为客户的数据库生成了一个更改脚本。我只更改了存储过程,但是当我生成 SQL 时,我检查了“脚本相关对象”。我在本地机器上运行它,一切似乎都运行良好。我在客户端的服务器上运行它,脚本成功了。

然后我加载了网站,该网站是空的。令我震惊的是,“脚本相关对象”设置对DROP TABLE我的存储过程触及的每个表都做了一个。

我立即打电话给首席开发人员和老板,让他们知道发生了什么,并询问数据库的最新备份在哪里。其他 2 位开发人员参加了会议,我们得出的结论是,甚至没有备份系统到位,也无法恢复任何数据。客户丢失了整个网站的内容,而我是根本原因。结果是我们的客户获得了5000 美元的信用。

对我来说,这是一个很好的教训,现在我对运行任何更改脚本和首先备份数据库都非常谨慎。我今天还在同一家公司工作,每当出现关于备份或数据库脚本的笑话时,总会有人提起著名的“DROP TABLE”事件。


小智 5

有以下作用:

update email set processedTime=null,sentTime=null

在生产时事通讯数据库上,重新发送数据库中的每封电子邮件。


小智 1

我删除了实时数据库并将其删除。

经验教训:确保您了解 SQL - 并确保在接触内容之前进行备份。