准备:

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

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. jquery 字数限制

    $("#TextArea1").keydown(function(){ 10 var curLength=$("#TextArea1").val().lengt ...

  2. phonegap开发入门

    做了几次开发配置了,但时间一长就忘了,特记录一下. 一.环境变量配置::右击“我的电脑”-->"高级"-->"环境变量" 1.在系统变量里新建JAV ...

  3. MM 不哭 (tyvj 1097)

    题目大意: 一条数轴上有 n 个 MM 在哭,需要tcboy去安慰,tcboy 一开始站在第k个MM身边,每个MM 哭都会减掉tcboy的RP. 确定安慰MM的顺序使得RP扣得最少.求 min(Rp_ ...

  4. C# Lodop实现打印

    项目的Debug文件夹下有个template文件夹,里面有用到的js.自己建的要打印的网页和用到的背景图 1.打印方法: class print { public void printzb(strin ...

  5. Java并发编程(三)后台线程(Daemon Thread)

    后台线程,守护线程(Daemon Thread) 所谓的后台线程,就是指这种线程并不属于程序中不可或缺的部分,因此当所有的非后台线程结束时,程序也就终止了,同时会杀死进程中的所有后台线程.通过setD ...

  6. HDU5478 原根求解

    看别人做的很简单我也不知道是怎么写出来的 自己拿到这道题的想法就是模为素数,那必然有原根r ,将a看做r^a , b看做r^b那么只要求出幂a,b就能得到所求值a,b 自己慢慢化简就会发现可以抵消n然 ...

  7. FFT快速傅立叶变换的工作原理

    实数DFT,复数DFT,FFTFFT是计算DFT的快速算法,但是它是基于复数的,所以计算实数DFT的时候需要将其转换为复数的格式,下图展示了实数DFT和虚数DFT的情况,实数DFT将时域中N点信号转换 ...

  8. 关于BIOS的一点东西

    关于BIOS的一点东西 编辑删除转载2016-05-20 00:36:36 去把BIOS的每个单词意思都有道一遍就都明白了,BOOT是更改 启动顺序的(台式机一直按del键就会进入BIOS界面,用上下 ...

  9. 记录一些容易忘记的属性 -- UIImageView

    UIImage *image =  [UIImage imageNamed:@"back2.jpg"]; //创建一个图片对象,这个方法如果图片名称相同,不管我们调用多少次,得到的 ...

  10. SQL Server 2008 定时作业的制定(SQL2005参考此方法) 转

    --  Author : htl258(Tony)--  Date   : 2010-04-29 19:07:45--  Version:Microsoft SQL Server 2008 (RTM) ...