拯救SQL Server数据库事务日志文件损坏

在数据库的日常管理中,我们不可避免的会遇到服务器突然断电(没有进行电源冗余),服务器故障或者 SQL Server 服务突然停掉,

头大的是ldf事务日志文件也损毁了,SQL Server服务器起来之后,发现数据库处于"Recovery Pending" 状态。

更麻烦的是该数据库没有任何备份或者备份已经比较久远;

当然这些都不是最难的,最难的是连资深DBA使出ATTACH_REBUILD_LOG和 DBCC CEHECKDBREPAIR_ALLOW_DATA_LOSS 选项等招数时候,

即使已经做好了最坏打算,做了丢失部分数据的准备,数据库还是无法上线。

测试环境: SQL Server 2022,Windows 2016

注意:做任何操作之前注意先做备份! 

模拟环境

首先,在数据库 testdb 中创建 testObject 表,并不停插入所有对象数据。

在窗口一我们运行插入数据脚本,使用多次 CROSS JOIN,以获得足够多的数据,插入数据脚本实际是一个模拟的大事务。

--窗口1

CREATE DATABASE testdb
GO
USE testdb
GO        

SELECT * INTO testObject FROM sys.all_objects


--前面脚本执行完成再执行下面的插入语句
INSERT INTO dbo.testObject
SELECT o.* FROM sys.all_objects o
 CROSS JOIN sys.all_objects o1
 CROSS JOIN sys.all_objects o2
 CROSS JOIN sys.all_objects o3
 CROSS JOIN sys.all_objects o4

在窗口二我们在关闭测试实例时,窗口一的插入事务仍然在运行。

这将使得数据库处于不一致状态,在数据库启动时,执行数据库恢复。

SHUTDOWN WITH NOWAIT

数据库停服后,将testdb数据库 的ldf事务日志文件改名或者移到其他路径,重新启动SQL Server 服务,可以看到,testdb 数据库处于“恢复挂起”状态。

因为在停服时候,还有未提交的插入事务保存在ldf事务日志文件,需要在数据

相关推荐

  1. 拯救SQL Server数据库事务日志文件损坏

    2024-07-18 22:50:02       19 阅读
  2. sqlserver 事务

    2024-07-18 22:50:02       48 阅读
  3. Oracle数据库日志文件

    2024-07-18 22:50:02       39 阅读
  4. SqlServer日期格式转换

    2024-07-18 22:50:02       53 阅读
  5. SqlServer 数据库挂起

    2024-07-18 22:50:02       28 阅读
  6. SqlServer数据库常见问题

    2024-07-18 22:50:02       26 阅读
  7. sqlserver2012 解决日志大的问题

    2024-07-18 22:50:02       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 22:50:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 22:50:02       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 22:50:02       58 阅读
  4. Python语言-面向对象

    2024-07-18 22:50:02       69 阅读

热门阅读

  1. LeetCode题练习与总结:分数到小数--166

    2024-07-18 22:50:02       23 阅读
  2. 总结 Thread 类的基本用法

    2024-07-18 22:50:02       23 阅读
  3. C++打印

    2024-07-18 22:50:02       16 阅读
  4. opencv—常用函数学习_“干货“_4

    2024-07-18 22:50:02       20 阅读
  5. 计算机视觉篇1 计算机视觉概览

    2024-07-18 22:50:02       22 阅读
  6. C#面:阐述下MVC框架的机制,各个模块的作用?

    2024-07-18 22:50:02       18 阅读
  7. Mysql中delete数据后磁盘空间浅析

    2024-07-18 22:50:02       20 阅读
  8. C# Linq用法

    2024-07-18 22:50:02       19 阅读
  9. Windows桌面应用开发框架

    2024-07-18 22:50:02       23 阅读
  10. 生成 HTTPS 证书并配置到 Nginx 的完整步骤

    2024-07-18 22:50:02       22 阅读
  11. tensorflow1基础函数学习

    2024-07-18 22:50:02       22 阅读
  12. cookies,sessionStorage和localStorage都有什么区别

    2024-07-18 22:50:02       18 阅读