【问题标题】:How to create a corrupt .bak file for testing?如何创建损坏的 .bak 文件进行测试?
【发布时间】:2015-02-18 15:35:08
【问题描述】:

我知道这是一个奇怪的问题,但是否有可能故意使 MS SQL Server 数据库的 .bak 文件损坏以用于测试目的?我想让它损坏,这样我就可以尝试通过故障排除进行恢复,并提高我的数据库恢复故障排除技能。

干杯!

【问题讨论】:

  • 我会尝试:打开一个现有文件,向中间截断,关闭。
  • 布伦特·奥扎尔最近有一个video
  • 我猜只是将一些随机数据附加到文件中:copy /b some_document.docx + your_backup.bak corrupted_backup.bak
  • 谢谢你们,非常感谢,会考虑这样做:)
  • Paul Randal 有一个很好的 blog series 说明如何使用 DBCC WRITEPAGE 破坏数据库(当然是为了练习目的)。这用于破坏附加的数据库,而不是备份文件,但这仍然很有趣。

标签: sql-server tsql


【解决方案1】:

您可以损坏 .bak 文件,只需使用文本编辑器打开它并更改一些艺术,但您将无法恢复此文件。 另一种方法是使用 unix dd 命令(您可以找到 windows 可执行文件)。

问候 乔瓦

【讨论】:

  • 感谢 Giova 的回答,但我还需要能够恢复它。关键是在它被损坏后尝试修复它,或者至少恢复一些数据。
  • 我认为您不会收到有关修复损坏的备份文件的回复。有商业工具可以做到这一点,我认为只有少数人能够做到。他们不会与我们分享这个秘密技能。无论如何,在现实世界中,如果数据库丢失和备份损坏,您应该联系 Microsoft 支持。
  • 是的,我知道,但我想让它损坏到我可以恢复它的阶段,而不仅仅是看它:)。你用你的解决方案说,没有恢复的可能性。我想要类似于 T.I 在上面的评论“Brent Ozar 最近有关于此的视频”中发布的内容
【解决方案2】:

您可以创建备份,然后编辑其内容。这将使您的备份文件损坏。我相信 RedGate 有非常棒的脚本来处理文件,你可以在这里阅读更多关于它的信息: https://www.red-gate.com/simple-talk/sql/t-sql-programming/reading-and-writing-files-in-sql-server-using-t-sql/

这是一个示例:

create database MyDb
go
Backup database MyDb to disk='C:\MyDb\Mydb.bak'
go

declare @currentContent nvarchar(max)
set @currentContent = (Select dbo.[ufsReadfileAsString]('c:\MyDb','MyDb.bak'))
set @currentContent = @currentContent +'some text'
execute spWriteStringToFile @currentContent, 'c:\MyDb','MyDb_Corrupted.bak'
go

现在MyDb_Corrupted.bak 是损坏的文件,MyDb.bak 是正常的备份文件。请注意,为了执行此脚本,您应该使用以下脚本启用Ole Automation Procedure

 exec sp_configure 'Ole Automation Procedures','1'
 reconfigure

【讨论】:

    【解决方案3】:

    我假设即使您选择任何测试/word 文档文件并将其重命名为 .bak,SQL 也会将其识别为损坏!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-01
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      • 2021-01-21
      相关资源
      最近更新 更多