-
您的位置:首页 → 精文荟萃 → 软件资讯 → SQLSERVER备份和对日志的处理
SQLSERVER备份和对日志的处理
时间:2004/10/7 18:20:00来源:本站整理作者:蓝点我要评论(0)
-
SQLSERVER备份和对日志的处理
在网上看到许多关于数据日志文件太大如何处理的问题,也看到了许多不合实际的做法,也有人因为错误的操作但是没有日志而急得焦头烂额,
其实数据库的日志文件是记录数据库 UPDATE,DELETE 操作的踪迹,也是当数据库发生意外(如黑客攻击,系统数据库发生破坏破坏等)时我们能够让数据库恢复至特定时刻的保证,
所以它很重要!!我们应该对数据库进行日志备份!
我们现在来分析一下数据库故障的种类:
一:事务内部的故障
也就是我们不能够保证事务的一致性状态,举个例子来说,您有两个银行帐户,由于某种原因,您现在需要从一个银行帐户上取出100万存到另一个银行帐户上,
但是由于银行数据库的故障,您的一个银行帐户确实少了100万,但是另一个帐户没有相应的增加100万,您现在会怎么做:( 当然我们可以在相应事务中加入ROLLBACK来强抽回滚
二:系统故障(软件故障-SOFT CRASH)
系统故障是指造成系统停止运转的任何事件,舍不得系统要重新启动.如特定类型的硬件故障(CPU故障),操作系统故障,DBMS代码故障,突然停电等,这类故障影响正在运行的事务,
但是不破坏数据库.这时所有内存的数据全部丢失,所有事务非正常终止,一些没有完成的事务的结果可能已经送给了物理数据库,从而数据库中的数据处于不正确状态,为保证数据的一致
性,需要清除这些事务对数据库的篡改!
这时系统重新启动后,对所有已经提交的事务REDO,对所有非正常终于的事务UNDO来强行撤消所有未完成的事务!
三:介质故障(硬件故障--HARD CRASH)
这是一种外存故障,如磁盘损坏,磁头碰撞,瞬时强磁场干扰等.这类故障可能性最小,但是破坏性最大.
四:计算机病毒
上述故障数据库进行恢复的原理十分简单,就是两个字"冗余"现在我们就说一下如何建立"冗余"技术!
备份
我们现在来看一下SQL SERVER 的备份技术,所有数据库的备份目的都是一样的,SQL SERVER也一样,防止数据丢失!
本章主要包括下面几个方面的内容:
1.在SQL SERVER 中我们可以设置数据库的恢复模型为完全恢复模型,大容量插入模型和简单模型,
2.什么时候需要我们进行数据库的备份
3,有几种数据库备份方法
4.0,演示几种备份方法(用备份前的准备工作)
5.几种备份策略
上面的的内容可以在BOOK ON LINE 里找到非常好的答复,如果需要,我再写:)
练习:example:
0.首先要有一个完全备份(不然的话您是不能够成功的备份日志文件的:) )呵呵
backup database Northwind
to nwbakup1,nwbakup2
with init
--查看备份信息
RESTORE FILELISTONLY FROM nwbakup1,nwbakup2
也可以在企业管理器中SQL服务器-Northwind-右键-所有任务-备份数据库, 然后在图形界面下进行相应的操作,这是非常简单的
1.use northwind
insert employees(lastname,firstname) values('aaa','aaa')
delete from employees where lastname='aaa'
记下这时的时间
23:33
2.过3分钟输入
use northwind
insert employees(lastname,firstname) values('bbb','bbb')
3.此时select * from employees 将能看到这两条记录
4.进行日志备份,选中northwind数据库,所有任务,backup database
在对话框中,选择事务日志备份为备份类型,选择已有的备份设备,和追加到媒体
单击ok进行备份.这样生成了两个新纪录的日志备份
backup log Northwind to nwlogbakup
5.以下演示恢复
所有任务 restore database
对话框中选择时点还原,输入刚才记录的时间,单击ok恢复
restore database Northwind
from nwbakup1,nwbakup2
with norecovery
use Northwind
服务器: 消息 927,级别 14,状态 2,行 1
无法打开数据库 'Northwind'。该数据库正处于还原操作中途。
这是因为我们指定了选项" with norecovery"
6.现在恢复事务日志至23:35
restore log Northwind
from nwlogbakup
with recovery,
stopat=񟭃-08-02 23:35'
6.执行select * from employees ,此时只能看到第一个新插入的记录
--查看备份信息
RESTORE FILELISTONLY FROM DISK ='C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\db1_backup'
DBCC SQLPERF (LOGSPACE) --查看日志空间
1*你应该备份日志
BACKUP LOG 数据库名 TO DISK='c:\aalogbak' WITH INIT,NO_TRUNCATE
这样你的日志清空也备份了,日志也清空了,你可以压缩了
在维护日志备份序列时,调度 BACKUP LOG 语句按间隔发生,以使事务日志不致增长到超过预期的大小。
如果不想要日志或者是日志已没有什么作用时,可以考虑以下的实现方案:
1. backup log DBNAME with [no_log|truncate_only][no_truncate]
/*
NO_LOG | TRUNCATE_ONLY
无须备份复制日志即删除不活动的日志部分,并且截断日志。该选项会释放空间。因为并不保存日志备份,所以没有必要指定备份设备。NO_LOG 和 TRUNCATE_ONLY 是同义的。
使用 NO_LOG 或 TRUNCATE_ONLY 备份日志后,记录在日志中的更改不可恢复。为了恢复,请立即执行 BACKUP DATABASE。
NO_TRUNCATE
允许在数据库损坏时备份日志。
*/
2. 收缩数据库文件
select fileid,filename from sysfiles
USE DBNAME
DBCC SHRINKFILE (2,10) -- 把fileid=2 的文件收缩到 10 MB
OR
企业管理器-右键你要压缩的数据库-所有任务-收缩数据库-收缩文件-选择日志文件-在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
3: 删除LOG
1:分离数据库
2:删除LOG文件
3:附加数据库
此法生成新的LOG,大小只有500多K
4.你可以先配置你的RECOVERY MODEL 为SIMPLE
ALTER DATABASE DB_NAME SET RECOVERY SIMPLE
5.exec sp_dboption 'test2','autoshrink','on'
5
展开服务器组,然后展开服务器。
展开"数据库"文件夹,右击要从中删除数据或日志文件的数据库,然后单击"属性"命令。
若要删除数据文件,单击"常规"选项卡。若要删除日志文件,单击"事务日志"选项卡。
在"文件名"列中,单击要删除的文件名旁边的箭头,再按 DELETE 键。文件名旁出现十字光标,表明将删除此文件。
说明 只能删除空文件
呵呵,俺先在这儿抛几块砖头,有玉的尽管拿来:)
相关阅读
Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
-
热门文章
360快剪辑怎么使用 36
金山词霸如何屏幕取词
百度收购PPS已敲定!3
最新文章
微信3.6.0测试版更新了
微信支付漏洞会造成哪
360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗
人气排行
1xp系统停止服务怎么办?xp系统升级win7系统方2电脑闹钟怎么设置 win7电脑闹钟怎么设置3office2013安装教程图解:手把手教你安装与4qq影音闪退怎么办 QQ影音闪退解决方法5VeryCD镜像网站逐个数,电驴资料库全集6同步推是什么?同步推使用方法介绍7QQ2012什么时候出 最新版下载8EDiary——一款好用的电子日记本
查看所有0条评论>>