准备:

日志截断在下列情况下发生:

1、执行完 BACKUP LOG 语句时。
2、在每次处理检查点时(如果数据库使用的是简单恢复模式)。这包括 CHECKPOINT 语句所产生的显式检查点和系统生成的隐式检查点。例外情况是如果检查点发生在 BACKUP 语句仍活动时,则不截断日志

开始:

Sqlserver的恢复模式包括 简单恢复模式,大容量日志模式和完整恢复模式

当我们执行checkpoint的时候,实际是将缓存中的数据页数据更新到数据文件中。

而对于日志文件的改变又是如何表现的呢,我们一起通过实例看一下。

首先我们创建一个数据库(建库脚本省略)

设置数据库为简单恢复模式 添加五条记录

alter database dbtrain set recovery simple

insert into test values(1,'wwww')

go 5

再执行 DBCC log('DBTRain',2) 会看到当前活动日志的信息

如果再执行

checkpoint

DBCC log('DBTRain',2)

会看到日志被截断,只剩下checkpoint操作的日志记录

如果更换成完整恢复模式和大容量日志模式

alter database dbtrain set recovery full/bulk_logged

重复上面的动作会发现日志仍然被截断,这就让人很疑惑了。

原因就是因为我们是新创建的数据库,没有进行一次完整的备份,

并且一定要在完整恢复模式下做完整备份,一旦完整备份了就不要

随意变换恢复模式,不然会给你带来麻烦

在做备份之前还原模式就是简单,不管你怎么设置的。

如果不做完全备份的话保留事务日志是没有意义的。

查看数据库备份信息的脚本:

SELECT T1.Name AS DatabaseName,   Isnull(Max(T2.recovery_model), 'No Backup Taken') AS recovery_model,   'Full' AS BackupType,  
Isnull(CONVERT(VARCHAR(23), CONVERT(DATETIME, Max(T2.backup_finish_date), 131)), '') AS LastBackUpTaken  FROM sys.sysdatabases T1  
LEFT OUTER JOIN msdb.dbo.backupset T2   ON T2.database_name = T1.name  WHERE type = 'D'  GROUP BY T1.Name   
--Get the most recent Diff backup taken 
UNION ALL  SELECT T1.Name AS DatabaseName,   Isnull(Max(T2.recovery_model), 'No Backup Taken') AS recovery_model,  
'Differential' AS BackupType,   Isnull(CONVERT(VARCHAR(23), CONVERT(DATETIME, Max(T2.backup_finish_date), 131)), '') AS LastBackUpTaken 
FROM sys.sysdatabases T1   LEFT OUTER JOIN msdb.dbo.backupset T2   ON T2.database_name = T1.name  WHERE type = 'I'  GROUP BY T1.Name  
 --Get the most recent Log backup taken 
 UNION ALL  SELECT T1.Name AS DatabaseName, 
  Isnull(Max(T2.recovery_model), 'No Backup Taken') AS recovery_model,   'Log' AS BackupType,  
  Isnull(CONVERT(VARCHAR(23), CONVERT(DATETIME, Max(T2.backup_finish_date), 131)), '') AS LastBackUpTaken  
   FROM sys.sysdatabases T1   LEFT OUTER JOIN msdb.dbo.backupset T2   ON T2.database_name = T1.name  WHERE type = 'L'  GROUP BY T1.Name  
    --Get the databases with no backup yet taken 
    UNION ALL  SELECT T1.Name AS DatabaseName,   Isnull(Max(T2.recovery_model), 'No Backup Taken') AS recovery_model,   'No Backup' AS BackupType,
      Isnull(CONVERT(VARCHAR(23), CONVERT(DATETIME, Max(T2.backup_finish_date), 131)), '') AS LastBackUpTaken  FROM sys.sysdatabases T1  
      LEFT OUTER JOIN msdb.dbo.backupset T2   ON T2.database_name = T1.name  WHERE type IS NULL  GROUP BY T1.Name

Sqlserver CheckPoint 在三种恢复模式中的不同表现的更多相关文章

  1. sqlserver 三种恢复模式

    sql server数据库提供了三种恢复模式:完整,简单和大容量日志,这些模式决定了sql server如何使用事务日志,如何选择它要记录的操作,以及是否截断日志.截断事务日志是删除己执行事务并把该日 ...

  2. SQL SERVER数据库 三种 恢复模式

    SQL SERVER 2005 以后三种恢复模式: 简单(Sample),完全(Full),大批量(Bulk_Logged) 完全备份模型 完全备份模式是指在出现数据文件毁坏时丢失数据的风险最小.如果 ...

  3. 转 一篇关于sql server 三种恢复模式的文章,从sql server 的机制上来写的,感觉很不错,转了

    简介 SQL Server中的事务日志无疑是SQL Server中最重要的部分之一.因为SQL SERVER利用事务日志来确保持久性(Durability)和事务回滚(Rollback).从而还部分确 ...

  4. SQL Server数据库的三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式(转载)

    SQL Server数据库有三种恢复模式:简单恢复模式.完整恢复模式和大容量日志恢复模式: 1.Simple 简单恢复模式, Simple模式的旧称叫”Checkpoint with truncate ...

  5. 后勤模块数据源的增量队列(Delta-Queue)三种更新模式(Update Mode)

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  6. VMware 虚拟机三种网络模式详解

    一.前言 Vmware 为我们提供了三种网络工作模式,分别是:Bridged(桥接模式).NAT(网络地址转换模式).Host-only(仅主机模式). 二.VMware 的几个常见虚拟设备 打开 V ...

  7. php中的public、protected、private三种访问控制模式及self和parent的区别(转)

    php的public.protected.private三种访问控制模式的区别 public: 公有类型 在子类中可以通过self::var调用public方法或属性,parent::method调用 ...

  8. [Swift实际操作]八、实用进阶-(2)Swift语言中的三种消息传递模式

    本文将通过响应按钮的点击事件,来演示Target-Action消息传递机制,该机制主要用于响应用户的界面操作.打开创建的空白项目.然后在左侧的项目导航区,打开视图控制器的代码文件:ViewContro ...

  9. VMWare中的三种联网模式图解

    网络基础及局域网配置 1.简单的局域网结构 2.VMWare中的三种联网模式 NAT模式 桥接模式 VMnet1

随机推荐

  1. MyEclipse 修改代码不生效

    最近得了一个项目,java开发的web项目,修改代码时,无论怎么改,都不生效: 各种度娘,没用. 原因是没有建立发布设定 这个东西我开始不理解它的作用,现在知道了: mysqleclipse项目在一个 ...

  2. async = require('async')

    var mongoose = require('mongoose'), async = require('async'); mongoose.connect('localhost', 'learn-m ...

  3. 0xC0000005: 读取位置 0x00000000 时发生访问冲突

    遇见这种问题一般都是空指针,即:指针里没有赋值~ 如果你对null 进行操作就会产生空指针异常 Object obj = new Object(); 你要知道 obj是一个Object指针变量,指向O ...

  4. android webview实战

    webSettings = wvShowProduce.getSettings();//设置WebView属性,能够执行Javascript脚本webSettings.setJavaScriptEna ...

  5. swing LayoutManager 和多态

    interface LayoutManager{ void show();}class FlowLayout implements LayoutManager{ public void show(){ ...

  6. Maven 建立web项目 The import javax.servlet cannot be resolved

    右击项目,选择Java Build Path->Libraries->Add External JARs,tomcat的路径lib文件夹下选中"servlet-api.jar&q ...

  7. (转)SoftReference

    本文介绍对象的强.软.弱和虚引用的概念.应用及其在UML中的表示. 1.对象的强.软.弱和虚引用   在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说, ...

  8. iOS中nil、Nil、NULL、NSNull详解(转)

    ObjC 里面的几个空值符号经常会差点把我搞死,这些基础的东西一点要弄清楚才行,以提高码农的基本素质. nil nil 是 ObjC 对象的字面空值,对应 id 类型的对象,或者使用 @interfa ...

  9. Ubuntu 14.10 下Ganglia监控Hadoop集群

    前提是已经安装好Ganglia和Hadoop集群 1 Master节点配置hadoop-metrics2.properties # syntax: [prefix].[source|sink|jmx] ...

  10. 利用pl/sql developer进行远程连接oracle server出现的问题及解决办法

    由于本人刚刚给自己的笔记本做了系统,由原来的32位系统编程现在的64位系统,所以,很多软件由于兼容性,不得不重新安装...当我安完了pl/sql developer工具后,就满心欢喜的去连接远程ora ...