• SQL Server 数据库损坏修复


    当数据库损坏时可以在数据库上先运行 DBCC CHECKDB,以了解损坏情况和相关信息。
    根据备份修复:

    • 如果只有一个页面被损坏,可以进行单页面恢复。
    • 如果只有一个文件组被损坏,可以执行单个文件组还原。
    • 如果是非聚集索引损坏
    BEGIN TRANSACTION;
    ALTER INDEX IndexName ON TableName DISABLE;
    ALTER INDEX IndexName ON TableName REBUILD WITH (ONLINE = ON);
    COMMIT TRANSACTION;

    注意事项:

    • 如果你的数据库已损坏,请不要尝试将其从实例中分离,因为可能无法再次附加连接它,因为已损坏。尤其是数据库状态为 SUSPECT的时候。
    • 如果你的 SQL Server 实例已损坏,并且数据库也已损坏,请不要尝试将其附加到较新版本的 SQL Server或升级,因为升级可能会失败导致数据库无法附加到任一版SQL Server 的旧版本或新版本。
    • 如果崩溃恢复正在运行,请不要试图关闭 SQL Server 并删除日志文件。这保证至少会导致数据不一致和最坏的损坏。崩溃恢复有时可能需要很长时间,具体取决于崩溃时必须回滚的打开事务的长度。
    • 某些情况下的损坏是无法修复(例如损坏的表元数据),这时"必须"使用备份或冗余副本还原。
    • 最后可以尝试REPAIR_ALLOW_DATA_LOSS的方式进行修复(可能会丢失数据以进行修复)。由于损坏无法执行REPAIR_ALLOW_DATA_LOSS时将数据库设置为紧急状态(失败的话可以尝试先OFFLINE然后ONLINE)和单用户模式。
  • 相关阅读:
    [daily][archlinux][mdadm][RAID] 软RAID
    [daily] pandoc
    [knownledge][latex] LaTex入门
    [daily][mariadb][mysql] mariadb快速设置
    [daily][archlinux][btrfs][mysql] 在btrfs上使用mariadb
    [daily][archlinux][game] 几个linux下还不错的游戏
    [daily][gnucash] 复式记账
    [development][suricata] linux下一代权限控制 capabilities
    [DPI][suricata] suricata 配置使用
    [DPI][suricata] suricata-4.0.3 安装部署
  • 原文地址:https://www.cnblogs.com/VicLiu/p/15602777.html
Copyright © 2020-2023  润新知