SQL Server 2008下日志清理方法

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

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

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

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

3.选择日志

或者用如下语句

代码

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从句执行一个事物日志备份,仅清空而不备份事物日志。

完整&事物日志备份优点是备份过程比完整&差异备份快但它的恢复是最麻烦的,完整&事物日志备份能够清除事物日志,是任何一种数据库备份策略所必不可缺的。

SQL Server 2008下日志清理方法

时间: 2024-10-24 14:16:59

SQL Server 2008下日志清理方法的相关文章

SQL Server 2008下日志清理方法 2

SQL Server 2008下日志清理方法 (2011-07-14 10:30:45) 转自 http://blog.sina.com.cn/s/blog_4bdd3d0b0100wfvq.html 标签: it   每次看到暴涨的数据库日志就有些头大,于是乱搜一通找个办法把日志干掉,下次又头大,又搜半天,于是还是写篇blog,不用乱找了. 1.将数据库设置成 简单 模式 选择要收缩的数据库,点右键 属性->选项,选择 简单模式 2.选择任务->收缩->文件 3.选择日志 或者用如下语

SQL Server 2008 收缩日志

SQL SERVER 2008 中 BACKUP LOG WITH TRUNCATE_ONLY 已不再被支持,要收缩数据库日志,首先需要通过将数据库恢复模式设置为 SIMPLE 来截断该文件. 语句如下: USE DATABASENAME; GO-- Truncate the log by changing the database recovery model to SIMPLE. ALTER DATABASE DATABASENAME SET RECOVERY SIMPLE; GO-- Sh

如何在SQL Server 2008下轻松调试T-SQL语句和存储过程

一.回顾早期的SQL SERVER版本:早在SQL Server 2000时代,查询分析器的功能还很简陋,远不如VS那么强大.到SQL Server 2005时代,代码高亮.SQL优化等功能逐渐加强,但是依然无法调试SQL语句.好一点的第三方的SQL语法编辑器似乎也不够完美,这样导致一些人抱怨存储过程不便于维护,开发的时候能不用则不用.二.SQL Server 2008 Express 智能提示加强:该功能是SQL2008在SQL Server 2005之后的升级版,我们可以很方便的调用智能提示

Sql Server 2008收缩日志语句

--先查询DBName_Log在sys.database_files里的名称,此处暂用XXX代替 USE DBName GO SELECT file_id, name FROM sys.database_files; GO --真正的收缩语句.Sql Server 2008要先将模式改为简单模式,收缩后再改回完全模式. SE [master] GO ALTER DATABASE DBName SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE D

SQL Server 2008 清除日志

在windows中运行sql server命令需使用sqlcmd命令,这个在安装sql server时会一并安装. 使用sqlcmd进入交互模式下: 之前使用的命令为: DUMP TRANSACTION databasename WITH NO_LOG --清空日志 BACKUP LOG databasename WITH NO_LOG --截断事务日志 DBCC SHRINKDATABASE(databasename) --收缩数据库 上述命令需要按照顺序执行, 通常比直接使用右键菜单中的"收

清理SharePoint 2010的SQL Server 2008 R2日志数据库的方法!

//来源:http://www.cnblogs.com/nbpowerboy/p/3380079.html 公司用SharePoint 2010已有三年多的时间了,上BPM项目也有2年多的时间,之前供应商的部署SharePoint数据库都在一个物理盘,数据库文件与日志文件没有进行分开存放到不同的物理磁盘上,最近发现Sharepoint的数据库磁盘经常满,导致无法保存数据,经检查发现数据磁盘的所有日志文件占了800多个G,总共磁盘空间也就0.99T,也就是日志文件远远大于数据文件,因此需要收缩日志

SQL Server 2008 收缩日志 清空删除大日志文件

SQL2008 的收缩日志 由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消: (SQL2005) BackupLog DNName with no_log go dump transaction DNName with no_log go USE DNName DBCC SHRINKFILE (2) Go --------------------------------------------------------------

SQL SERVER 2008清理日志

ALTERDATABASE DNName SET RECOVERY SIMPLE   --简单模式 GO 右键-任务-收缩-文件-确定 下来数据库的日志只保留了1M ALTERDATABASE DNName SET RECOVERY FULL  --还原为完全模式 GO

sql server 2008清除日志

先改成简单模式,再清除日志,再改回原来模式 USE [oms20190322]GOALTER DATABASE oms20190322 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE oms20190322 SET RECOVERY SIMPLE --简单模式GOUSE oms20190322 GO DBCC SHRINKFILE (N'nh_oms_log' , 11, TRUNCATEONLY)    --这里的名称需要到查询(SELEC