SQL Server 2008下日志清理方法(ZT)

每次看到暴涨的数据库日志就有些头大,于是乱搜一通找个办法把日志干掉,下次又头大,又搜半天,于是还是写篇blog,不用乱找了。

1.将数据库设置成 简单 模式

选择要收缩的数据库,点右键 属性->选项,选择 简单模式

SQL Server 2008下日志清理方法(ZT) - god2speed - god2speed的博客

2.选择任务->收缩->文件

SQL Server 2008下日志清理方法(ZT) - god2speed - god2speed的博客

3.选择日志

SQL Server 2008下日志清理方法(ZT) - god2speed - god2speed的博客

或者用如下语句

SQL Server 2008下日志清理方法(ZT) - god2speed - god2speed的博客 代码
USE [ master ]
GO
ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE DNName SET RECOVERY SIMPLE
GO
USE DNName
GO
DBCC SHRINKFILE (N ' LogFileName ' , 0 ,TRUNCATEONLY)
GO
USE [ master ]
GO
ALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE DNName SET RECOVERY FULL
GO





SQL Server 2000要清理日志使用的是dump语句,但是在SQL Server2008里,这个语句不管用了,如果日志文件很大,比如超过1G,就需要截断一下日志文件以加快sqlserver的运行速度,在SQL Server2008里,方法改为:

有数据库 xxdb 在 SQL Server 2008 下,日志文件已经超过1G。

以往使用BACKUP语句-BACKUP LOG xxdb WITH NO_LOG 已经失效,在查阅 MSDN 之后发现 MS 提供的标准截断日志语句已经变为了 “BACKUP LOG 语句不指定 WITH COPY_ONLY”

使用语句 BACKUP LOG xxdb to disk='x:\work\1.bak' 成功将日志文件备份,并截断日志文件。这里x:代表你想要备份文件的盘符。

然后使用 DBCC SHRINKFILE (xxdb_log,10) 收缩日志文件到 10M

总结:

完整的收缩日志文件的 T-SQL 语句:

BACKUP LOG xxdb to disk='x:\work\1.bak'
DBCC SHRINKFILE (xxdb_log,10)
GO

--

BACKUP LOG <db_name> to disk=<'backupfilename'>
DBCC SHRINKFILE (<log_filename>,10)
GO

里面的x:\work是随意设置的。当然也可以收缩到比如5M或1M。




数据库的数据是极其宝贵的,作为管理员的一项主要工作就是对数据库按计划进行备份,从而在性能和数据安全找个平衡。换句话说备份的目的就是防范可能的硬件故障,自然灾害或数据被非法篡改。
备份可以分为完整备份,差异备份和事物日志备份。
完整备份备份整个数据库,包含数据库文件,这些文件的地址及事物日志中的从备份开始时记录的日志顺序号到备份结束时的日志顺序号。完整备份是其他备份的基础,没有完整备份将无法进行差异备份和事物日志备份。
步骤:打开 SQL Server Management Studio ,展开服务器文件夹下的数据库文件夹
右击要备份的数据库,选择“属性”选项
把“选项”页面上的“恢复模式”改为“完整”,这步操作主要是为了保留日志,为接下来的事物日志备份做准备。
右击需要做备份的数据库,选择“任务”、“备份”,在“备份数据库”对话框中选择“备份类型”为“完整”。
选择备份设备
在“选项”页面上选择“覆盖所有的现有备份集”,从而初始化崭新的设备或覆盖现有的设备
建议选取“完成后验证备份”来核对实际数据库与备份副本以保证一致性
单击“确定”开始备份
备份完成后可以查看一下,打开 SQL Server Management Studio 下的“对象资源管理器”,展开“服务器对象”下的“备份设备”,右击设备选择“属性”选项,在“媒体内容”页面上看到我们作的备份
差异备份记录自上一个完整备份后数据库发生的所有变化,与事物日志备份的区别就是差异备份始终以上一个完整备份为起点,而事物日志备份是以上一次备份为起点的。当执行差异备份时 SQL Server 读取上一次完整备份的最后日志顺序号,并找出自上次完整备份后发生变化的页面,并对发生变化所在页面的整个盘区( Extent )进行备份。
步骤:打开 SQL Server Management Studio ,展开服务器文件夹下的数据库文件夹
右击需要做备份的数据库,选择“任务”、“备份”,在“备份数据库”对话框中选择“备份类型”为“差异”。
选择备份设备
在“选项”页面上选择“追加到现有备份集”,不覆盖现有的完整备份,不要选择“覆盖所有的现有备份集”从而避免覆盖现有的完整备份。
建议选取“完成后验证备份”来核对实际数据库与备份副本以保证一致性
单击“确定”开始备份
最后一种是事物日志备份,事物日志备份依赖于完整备份但并不备份数据库本身,只备份事物日志中自上一个事物日志备份以来发生变化的部分。
关于事物日志再多提一点,在数据库使用完全或批量日志恢复模型时,事物日志备份是唯一能从事物日志中清除旧事物日志的方式,当数据库使用简单恢复模型时完整备份与差异备份才能清除事物日志。
步骤:打开 SQL Server Management Studio ,展开服务器文件夹下的数据库文件夹
右击需要做备份的数据库,选择“任务”、“备份”,在“备份数据库”对话框中选择“备份类型”为“事物日志”。
选择备份设备
在“选项”页面上选择“追加到现有备份集”,不覆盖现有的完整备份,不要选择“覆盖所有的现有备份集”从而避免覆盖现有的完整备份。
建议选取“完成后验证备份”来核对实际数据库与备份副本以保证一致性
单击“确定”开始备份
常见的备份主要是以上三种,除此以外,在大型数据库中还有一种选择:文件组备份,每次只从数据库中备份一小部分,在本文不对文件组备份作讨论。
备份策略的设计
相比较几种备份方式,用一句话形容就是存在即合理,每种备份方式都有其优缺点和适应范围,要根据实际工作具体考虑
纯完整备份优点是恢复过程是所有策略中最快的,相对的,它的备份过程也是所有策略中最慢的,另外,纯完整备份无法清除事物日志(使用完全或批量恢复模型且保留时间点恢复功能),作为补充可以使用 TRUNCATE_ONLY 从句执行一个事物日志备份,仅清空而不备份事物日志。
完整 & 差异备份优点是恢复过程是所有策略中较快的,同时它的备份过程也不是所有策略中最慢的,此外,完整 & 差异备份同样无法清除事物日志(使用完全或批量恢复模型且保留时间点恢复功能),可以使用 TRUNCATE_ONLY 从句执行一个事物日志备份,仅清空而不备份事物日志。
完整 & 事物日志备份优点是备份过程比完整 & 差异备份快但它的恢复是最麻烦的,完整 & 事物日志备份能够清除事物日志,是任何一种数据库备份策略所必不可缺的。




http://bbs.csdn.net/topics/350184789
全备份

不管恢复模式是哪一个,所有的备份都必须要有一个全备份,特别是日志备份和差异备份,如果没有全备份的话,将无法进行恢复。

简单的全备份脚本如下所示,也可以通过维护计划来指定全备份:

 

  BACKUP DATABASE mydb to DISK=’D:\Backup\mydb.bak’



但需要注意的是,上述命令是将数据库备份附加到当前的存在的文件上,如果不存在则创建它,并不会覆盖原有文件。要覆盖同名的备份文件,需要指定INIT参数。

 
SQL code
BACKUP DATABASE mydb to DISK=’D:\Backup\mydb.bak’ WITH INIT


日志备份

在完全恢复模式或者大容量日志恢复模式下,日志备份不仅仅是恢复的需要,同时也是手工管理事务日志文件的一种方式。如果从不进行备份的话,在完全恢复模式或者大容量恢复模式下,事务日志将会持续增长,直至消耗完所在磁盘。

日志备份的脚本如下:

 
 BACKUP LOG mydb_log TO DISK=’D:\backup\mydb.trn’



需要养成使用.trn为日志备份的扩展名的习惯。

每个在数据库上的动作都会被安排一个Log Sequence Number (LSN)。如果需要还原到指定的时间点,需要有持续的LSN记录。也就是说,在完全恢复模式或者大容量日志模式下,一个不被打断的事务日志备份链是恢复数据库的基本要求。

差异备份

使用日志备份来恢复时,无疑是一个很慢的过程,特别是上一个全备份的历史比较悠久时。使用差异备份,便能缩短恢复时间。事实上,差异备份只是BACKUP DATABASE的一个选项,如下:

 
  BACKUP DATABASE mydb TO DISK=’D:\backup\mydb.dif’ WITH DIFFERENTIAL,INIT



进行数据库恢复时,先恢复数据库全备份,再恢复数据库差异备份,最后才恢复日志备份。

差异备份是与上一次全备份紧密相连的,不管期间有多少次日志备份和差异备份,差异备份还是会从上一次全备开始备份。因此,经常会遇到这样的一种情况,在生 产库上需要临时使用数据库时,便用BACKUP DATABASE … TO DISK=’..’进行了一个备份,下一次的差异备份便会以这回的全备为 准,如果过后把这个临时全备删除掉后,后面的差异备份就没用了。

差异备份并不意味着磁盘空间肯定会少,这取决于实际情况。当期间大量操作发生时,差异备份还是会变得很大
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值