zoukankan      html  css  js  c++  java
  • SQL Server 完整备份遇到的一个不常见的错误

    1. 错误详情

    有一次在手动执行数据库完整备份时遇到如下错误:

    执行多次都是这个错误信息。

    提示无法生成检查点,原因可能是由于系统资源(如磁盘或内存空间)不足或者有时是由于数据库损坏而造成的。

    我们检查数据库资源可以排除磁盘资源不足的情况。

     2.检查点相关知识

     事务日志、数据文件 和 checkpoint的关系。

    在SQL Server中,进行insert, update, delete时,数据并没有直接写入数据库对应的mdf文件中,而是写入了缓存里, 这时,就要提到一个非常重要机制:CheckPoint,它主要作用是把缓存中的数据写入mdf文件中。

    可以用下面的这个经典图来说明:

    3.触发CheckPoint检查点的事件

    1.在数据库备份之前,数据库引擎会自动执行检查点,以便在备份中包含对数据库页的全部更改。

    2.日志的活动部分超出了服务器在 recovery interval 服务器配置选项中指定的时间内可以恢复的大小。

    3.日志的 70% 已满,并且数据库处于日志截断模式。

    4.停止服务器也会在服务器上的每个数据库中发出一个检查点命令。

    4.手动执行检查点

    所以这个错误很可能就是备份时出现了检查点的问题,那么我们手动执行一次检查点。

    通常,我们很少需要手动执行checkpoint指令,checkpoint的语法为 :CHECKPOINT [ checkpoint_duration ],checkpoint_duration 为完成该checkppoint所需的秒数。
    正常情况下,我们不会指定checkpoint_duration 该值,而是用数据库自动调整的检查点持续时间,以降低对数据库的性能影响。
    因为数据库在执行checkpoint的时候,脏页数、修改数据的活动事务以及指定实际持续时间checkpoint_duration,都会影响资源的分配情况,假设指定了checkpoint_duration的值为50s,而正常情况下完成这个操作需要150s,那么这个时候,数据库为了满足指定的checkpoint_duration 50s,就会比正常情况下,分配更多的资源给该指令运行,那么就会影响到正常情况下的其他操作对资源的利用了。

    5.效果验证

    运行了一下checkpoint 好了。

    嘻嘻

  • 相关阅读:
    最长回文子串(马拉车)
    ubutun 启动/停止/重启MySQL数据库
    臭大佬_LZW
    Beauty Contest(求凸包最大直径)
    Smallest Bounding Rectangle(最小面积外接矩形)
    Triangle(求凸包最大内接三角形)
    P4196 [CQOI2006]凸多边形
    P4724 【模板】三维凸包(简洁)
    P2600 [ZJOI2008]瞭望塔【半平面交】
    退役记
  • 原文地址:https://www.cnblogs.com/xuliuzai/p/10830789.html
Copyright © 2011-2022 走看看