一.概述 当数据库发生损坏,数据库的每个文件都能打开,只是其中的一些页面坏了,这种情况可以借助DBCC CHECKDB进行数据库检查修复.如果要保证数据库不丢失,或修复不好,管理员只能做数据库完整恢复,为了少数页面恢复整个数据库,代价是比较高的,sql server引入了页面还原功能,可以指定还原若干页面,从而能够大大节省数据库恢复时间. 页面还原用于修复隔离的损坏页面,还原恢复时间比文件更快,减少了还原过程中处于离线的数据量,当某个文件的大量页面都出现损坏,可以直接还原该文件(需要有文件备份)…
一. 概述 在sql server 备份与恢复系列的第一篇里,有讲到大容量模式下备份与还原的相关知识.这篇重点来演示在大容量模式下常用的备份与还原模式“完整备份+差异备份+日志备份”. 在大容量恢复模式下,特别要注意的是在什么情况下会导致数据还原丢失风险,带着这个问题,来进行演示说明.备份策略如下图所示: 二.备份 我这里有TestBulkLogged库,库里新建了一个product空表.备份SQL语句如下所示: use master -- 设置大容量模式 ALTER DATABASE Test…
一.概述 在前面讲过"sql server 备份与恢复系列"都是集中在用户数据库上.sql server还维护着一组系统数据库,这些系统数据库对于服务器实例的运行至关重要.在每次进行系统更新后必须备份多个系统数据库.必须备份的系统数据库包括:msdb,master,model.如果使用了复制,还要备份distribution库.备份以防止系统故障时,用于还原恢复. 1.master数据库介绍 master数据库记录着所有系统级信息,如登录账户,系统配置,端点和凭据,以及访问其他数据库服…
一.概述 前面介绍了简单恢复模式和大容量恢复模式,这篇继续写完整恢复模式下的备份与还原.在完整恢复模式里最大的优点是只要能成功备份尾日志,就可以还原到日志备份内包含的任何时点("时点恢复").当然对比前二种模式它是牺牲了磁盘I/O性能. 恢复模式 备份策略 数据安全性 I/O性能 简单恢复 完整备份+差异备份 安全最差.最后一次备份之后,所有数据操作丢失. 最优 大容量恢复 完整备份+差异备份+日志备份 折中.批量操作有丢失风险.尾日志备份失败.最后一次备份之后,所有数据操作丢失 折中…
一.备份概述 数据安全是数据库的生命,数据库在使用过程中难免会遇到如:使用者的误操作或是被恶意修改,硬件故障导致数据文件无法被访问,自然灾害导致机房在物理上的损毁.本章从备份与恢复的功能作为解决问题的切入点.在实际工作中会遇到:使用什么样的备份策略(比如完整备份,文件备份,差异备份,日志备份),如何减少备份恢复时间(比如尽快恢复上线),如何将数据库恢复到想要的时间点(比如恢复到误操作以前),如何迁移数据库系统到一台新机器(比如用户账号,密码,任务脚本备份还原). 1.备份类型    在sql s…
1.1  日志文件与数据文件一致性 在上一章备份与恢复里了解到事务日志的重要性,这篇重点来了解事务日志. 事务日志记录了数据库所有的改变,能恢复该数据库到改变之前的任意状态.在sql server实例每次启动时都会去检查数据文件与日志文件的一致性. 包括日志记录的任何已提交的数据必须体现在数据文件上,未被标记为已提交的将禁止写入数据文件,日志还存储了收到客户端回滚事务请求,sqlserver出错如死锁等,日志产生一个rollback命令. 事务日志是在数据库创建或改变时与数据库关联起来的一个或多…
一.概述 前面讲了备份的一些理论知识,这篇开始讲在简单恢复模式下的备份与还原.在简单模式下是不能做日志备份的,发生灾难后,数据库最后一次备份之后做的数据修改将是全部丢失的,所以在生产环境下,数据又很重要,一般不建议使用这种模式. 例如对一个数据库有5次完整数据备份,时间是t5,  之后发生灾难,就会部丢失. 当数据库越来越大,完整备份时间会越来越长,为了减少丢失风险,引入差异备份.例如下图演示:在第一次建立数据库完整备份后,建立了三次差异备份,之后再建立完整备份,从而建立新的差异基准.不管是完整…
一. 概述 文件备份是指备份一个或多个文件或文件组中的所有数据.使用文件备份能够只还原损坏的文件,而不用还原数据库的其余部份,从而加快恢复速度.例如,如果数据库由位于不同磁盘上的若干文件组成,在其中一个磁盘发生故障时,只需还原这个故障磁盘上的文件,其它磁盘文件无须还原,这样缩短还原时间. 在完整恢复模式下,一整套完整文件备份和涵盖所有文件备份的日志备份合起来,等同于一个完整数据库备份. 1.1 文件备份具有如下优点: (1)可以迅速还原损坏的文件. (2)当超大型数据库在完整备份下变得难以管理时…
SQL Server差异备份的备份/还原原理 记住一点:差异备份是基于最后一次完整备份的差异,而不是基于最后一次差异的差异   备份过程: 1-完整备份之后有无对数据库做过修改,如果有,记录数据库的最后LSN(Last LSN) 如果完整备份之后无对数据库做过修改,那么差异备份就没有意义了   2-做差异备份时根据差异位图读取差异页面内容 注意:差异位图记录了自从最后一次完整备份以来数据库中有变化的页面,这样在做差异备份时候就不用扫全库页面,只需要读取有差异的页面   3-在备份之前,数据库会做…
最近写了<Sql Server来龙去脉系列  必须知道的权限控制基础篇>,感觉反响比较大.这可能也说明了很多程序猿对数据库权限控制方面比较感兴趣,或者某些技术点了解的没有很透彻. 有些人看了上篇感觉意犹未尽,介绍的都是基础方面,不够深入.那么本篇内容就比较符合大家的胃口,本篇包括了数据库常用的权限控制,例如服务角色以及数据库角色管理. 提几个问题 在介绍权限控制之前先提下面几个问题,如果有回答不上来的问题,本篇内容你应该看.如果很清晰的回答出这些问题,那么本篇接下来的内容你可以直接忽略. 1.…