SQL Server:如何附加/修复分离/损坏的数据库?

时间:2016-08-17 11:28:24

标签: sql-server ssms

数据库服务器崩溃了。我能够获取mdf和日志文件,我正在尝试将其挂载到另一台服务器上。我没有备份,因为它是一个开发数据库。

当我尝试附加mdf和ldf文件时,Sql Server Management Studio会给我这个错误:

    TITLE: Microsoft SQL Server Management Studio
    ------------------------------

    Attach database failed for Server

    ------------------------------

    Could not redo log record (457:14202:19), for transaction ID (0:478674), on page (1:519205), database 'WSS_Content_5555' (database ID 15). Page: LSN = (370:463:113), type = 1. Log: OpCode = 2, context 2, PrevPageLSN: (298:40524:64).
    Restore from a backup of the database, or repair the database.
    During redoing of a logged operation in database 'WSS_Content_5555', an error occurred at log record ID (457:14202:19).
    Typically, the specific failure is previously logged as an error in the Windows Event Log service.
    Restore the database from a full backup, or repair the database.
    Could not open new database 'WSS_Content_5555'.
    CREATE DATABASE is aborted. (Microsoft SQL Server, Error: 3456)

我不知道如何修复数据库。是否需要在修复之前附上?在那种情况下,我该如何附上它?

2 个答案:

答案 0 :(得分:3)

您可以尝试一种解决方法。简而言之:

  1. 创建一个具有相同名称的虚拟数据库(可能需要首先删除真实数据库,保存原始文件或重命名)。
  2. 取消虚拟线(分离和(设置为脱机或停止SQL服务))。
  3. 删除虚拟文件,然后用真实的DB文件替换。
  4. 尝试重新附加de DB
  5. 修改

    如OP评论说明您还需要重建日志(如果您丢失了交易)

    1. ALTER DATABASE [MyDatabase] REBUILD LOG ON(NAME ='MyDatabaseLog',FILENAME ='D:\ Microsoft SQL Server \ YourDataPath \ Data \ Logfile.ldf')

      并将数据库放入多个用户日志中(关闭数据库可能需要您将其置于一次性模式下)

    2. ALTER DATABASE [nomdb] SET MULTI_USER

    3. 对于所有血腥细节,您可以参考Paul Randal Article

      (注意在本文中作者使用EMERGENCY MODE来(尝试)修复事务日志)

      我已经成功使用它,但根据损坏程度或其他细节,这可能是一项不可能完成的任务。考虑恢复备份。

      请注意,这些特技在开发服务器中很好,但您确实需要在生产服务器中规划(和钻取)灾难恢复。

答案 1 :(得分:0)

您可以使用SQL Database Recovery Tool Repairs

我有一个数据库文件(Diamond.mdf),该文件已损坏,无法附加到SQL Server DB中,并且包含大多数业务数据。我不知道该错误,无法恢复损坏的数据库。我做了很多手动机制来克服这个问题,但是做不到。

  • 选择MDF文件:通过选择“选择”打开“选择数据库”对话框 文件菜单中的数据库图标。在“选择数据库”对话框中,单击“确定”。 浏览。
  • 打开对话框将出现。浏览并选择所需的文件,然后 然后单击“打开”,然后选择“包括已删除的记录”复选框以 在修复过程中恢复已删除的记录(如果找到)。
  • 通过选择“选择数据库”图标来打开“选择数据库”对话框 文件功能区。在“搜索”部分中,选择要搜索的驱动器 用于MDF文件。单击确定。

enter image description here

  • 搜索完成后,找到了MS SQL数据库文件列表 显示所选驱动器中的。选择您要修复的文件 此列表,然后单击修复按钮以开始修复过程。

enter image description here

  • 搜索完成后,找到了MS SQL数据库文件列表 显示所选驱动器中的。选择您要修复的文件 此列表,然后单击修复按钮以开始修复过程。

enter image description here

  • 这将修复损坏的mdf文件并加载数据库对象 在左侧窗格中。这样,我们可以查看所有存储的表 过程和所有对象。
  • 成功完成修复过程后,Stellar Repair 对于MS SQL,显示损坏的数据库文件的预览。左窗格 显示项目列表(表,视图,同义词,默认值,数据类型 等)在树状结构中,右上窗格显示 在树状视图和底部窗格中选择的项目的内容显示 消息日志。下面显示了一个示例屏幕

enter image description here

  • 修复过程完成后,单击“保存” 文件功能区。指定是否要保存修复的数据库 通过选择适当的单选以MDF,CSV,HTML或XLS格式显示 按钮。将修复的数据库另存为MDF将修复的数据库另存为 CSV,HTML或XLS如果要将修复的数据库另存为 MDF,您可以将数据库另存为新数据库,也可以 将数据插入到现有的Live数据库中。
  • 要将已修复的数据库另存为全新数据库,请遵循 下面提到的步骤:选择“新建数据库”单选按钮。输入 服务器/实例名称。从中选择身份验证方法 下拉列表以登录到服务器。
  • 如果选择的身份验证方法是Windows身份验证,则您 无需输入任何用户名和密码。输入服务器用户名 和密码(如果所选的身份验证方法是SQL Server) 身份验证。

enter image description here

  • 选择保存修复的MDF文件的目的地。点击保存 按钮保存修复的MS SQL数据库文件。一条消息是 该过程成功完成后显示。

enter image description here

  • 修复工作已完全完成,我能够打开数据库 从SQL Server Db,如下所示。 enter image description here

注意:这不是免费工具。