Mar*_*377 4 sql-server ssms restore
昨天我犯了一个严重的错误¹:恢复错误的数据库。
背景(您可以跳过本节):
我右键单击Test数据库并像往常一样进入“恢复数据库”部分。然后,在为源选择媒体(文件)时,我浏览了我最新的生产数据库备份(在上午 01:00 执行)。这不是一个错误。我确实需要有关于测试数据库的最新信息才能......测试。
但是,只要我在“添加媒体”对话框上点击“确定”,SSMS 就会检测到我的备份是从生产数据库制作的,并“悄悄地”更改了“目的地”字段以反映这一点。直到为时已晚,我才意识到这一点。从上午 1 点到下午 6 点 30 分的所有数据库更改都丢失了。
经过几个小时的挣扎,我如何接近我的经理并传达这些不愉快的消息,我决定尽我所能以任何可能的方式修复损害,并且在某种程度上,我幸运地成功了。
现在,采取的步骤:
现在,我对它的工作感到宽慰,但正如预期的那样,我的所有表都包含截至下午 6:29 的记录,而其他所有内容都丢失了。这是一个拥有 100 多个表的大型数据库,手动检查和插入所有内容需要数天时间。
问题:是否可以仅“恢复”出现在我最新备份中的丢失记录,但不能“恢复”我当前状态数据库中的丢失记录?如果是这样,需要哪些步骤?
¹ “我担心不像你那么严重” -贝恩
编辑回应詹姆斯·安德森的担忧:
小智 5
首先......我认为最好在此类问题上向您的经理坦白。企业会注意到丢失的数据,他不会感激被蒙蔽双眼和手头没有所有事实。在那种情况下,事情对你来说会更糟。如果您没有正式的 DBA 背景,您就没有业务从事 DBA 任务和/或真正的生产 DBA(如果他们存在)应该确保业务免受此类人为错误的影响。
简单地说,没有办法自动恢复单个行。有可用的工具集(红门数据比较会浮现在脑海中)允许您比较数据集并构建差异的脚本,但由您决定哪些更改是好的。
尽快清理干净。越早做这件事越好。
如果我正确阅读了时间线,那么当您FULL通过生产数据库恢复备份时,您就破坏了备份链。这意味着您将无法将 06:30PM 至 10:00PM 的数据获取到您当前的数据库中,该数据库包含 01AM 至 06:30PM 的数据以及自RESTORE.
我建议您RESTORE使用下午 6:30 至晚上 10:00 数据的数据库,并找出一种基于 T-SQL 代码的方法将这些数据移动到您的实时数据库中。您可能会遇到IDENTITY列问题,因为两个数据库中的新行可能采用相同的 ID。
IMO 越快让其他人参与制定解决此问题的计划越好。
祝你好运
| 归档时间: |
|
| 查看次数: |
2795 次 |
| 最近记录: |