• SQL Server 附加损坏的数据库


    尝试附加到SQL Server的数据库可能已损坏的原因有很多:

    • 有人错误地尝试通过分离+附加来修复可疑的数据库
    • 可能是来自无法访问的服务器的损坏数据库,需要附加以进行灾难恢复
    • 可能是你提供的数据库没有完全关闭(即存在活动事务)并且没有事务日志文件

    在上述任何一种情况下,都无法使用常规方法将损坏的数据库附加到 SQL Server:sp_attach_db、CREATE DATABASE ... FOR ATTACH或CREATE DATABASE ... FOR ATTACH_REBUILD_LOG(后两者在 SQL Server 2005 之后)。要么数据文件损坏将阻止附加,要么日志文件损坏将阻止启动或完成崩溃恢复。

    使用hack方法附加此类数据库。要完成的步骤如下:

    • 需要使用的服务器实例与尝试附加的数据库版本相同时才有效
    • 创建一个新数据库,具有相同的名称,相同数量的数据和日志文件,具有完全相同的文件名(非常重要!)和相同的文件 ID(确保您启用了即时文件初始化,以便文件创建不会需要很长时间)。如果你在数据库损坏之前向数据库添加或删除了文件,可能会很棘手,需要确保文件 ID 完全相同。
    • 将新数据库设置为离线状态 ( ALTER DATABASE RealDatabaseName SET OFFLINE ) 或关闭服务器
    • 从新数据库中删除所有数据和日志文件
    • 将损坏的数据库中的数据和日志文件复制到新库目录中
    • 将新数据库设置为在线(ALTER DATABASE RealDatabaseName SET ONLINE)或启动服务器

    在这一点上,SQL Server 认为数据库已附加并且可以能够采取进一步措施来恢复数据库。

    可能包括:

    • 还原日志尾部备份
    • 使用紧急模式将数据提取到新数据库中
    • 使用紧急模式修复来修复损坏的事务日志

    注意:如果数据库已经完全损坏即使是紧急模式修复也无法修复它。甚至无法使数据库进入紧急模式(例如,如果数据库启动页或主文件的文件头页损坏),则 SQL Server 无法访问数据库。此时唯一的选择是从备份中恢复。如果你没有备份,游戏结束。

  • 相关阅读:
    js 判断图片是否加载完成(使用 onload 事件)
    使用 css 的 keyframe 实现 loading 动画
    meta标签常用属性
    Chrome开发者工具 debug 调试
    ajaxForm上传文件到本地服务器(封装)
    优化jQuery选择器
    “要有足够的耐心,一点一滴地改变世界”
    Event事件的三个阶段
    css控制页面文字不能被选中user-select:none;
    webstrom打开多个项目,webstrom常用快捷键
  • 原文地址:https://www.cnblogs.com/VicLiu/p/15603152.html
Copyright © 2020-2023  润新知