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 好了。

嘻嘻

最新文章

  1. xmind8
  2. Gulp Babel AMD转换例子
  3. oracle 根据字段分组后,将组内的数据根据字段排序
  4. Atlas安装及配置
  5. Mac OS X 中使用SAP GUI的方法
  6. 【转】iOS开发Xcode7真机调试教程
  7. Flume笔记--示例(使用配置文件)
  8. Jndi and c3p0 in Tomcat
  9. Nginx代理外网映射
  10. README.md用法
  11. shell入门之expr的使用
  12. ztree搜索节点并展开
  13. nodejs常见问题
  14. Android四大组件总结
  15. java常量类编译问题
  16. nginx配置伪静态
  17. Java设计模式应用——责任链模式
  18. asp.net—单例模式
  19. go语言基础之普通函数的调用流程
  20. 多继承c3算法

热门文章

  1. 松软科技带你学开发:SQL--COUNT() 函数
  2. Python只读取文本中文字符
  3. java8接口
  4. JVM java内存区域的介绍
  5. JVM-Jinfo命令
  6. 【2019.10.7 CCF-CSP-2019模拟赛 T3】未知的数组(unknown)(并查集+动态规划)
  7. springboot+lucene实现公众号关键词回复智能问答
  8. 深入理解typescript的Functions
  9. Mac OSX vim配色方案选择
  10. Ansible 日常使用技巧 - 运维总结