SQL2008如何清空压缩数据库日志

SQL2008如何清空压缩数据库日志

编写人:左丘文

2015-4-10

近期在给一系统初始化资料时,不断的导入导出,因此一不小心,就将数据的SQL(sql2008R2)的是日志档弄得比数据库还大,给系统部署带来麻烦。因此想办法能否快速的将日志文件缩小到令人满意的504K。

今天在这里,我想与大家一起分享一下SQL2008中如何清空日志文档,在此做个小结,以供参考。有兴趣的同学,可以一同探讨与学习一下,否则就略过吧。

 

1.         采用我之前在SQL2005中的方法,发现已不能正常运行:

--sql 2005

1 DUMP TRANSACTION ECM WITH  NO_LOG
2 BACKUP LOG ECM WITH NO_LOG
3 DBCC SHRINKDATABASE(ECM)

2.         由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:

方法一:

在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。

1 --sql 2008
 2  
 3     USE [master]
 4     GO
 5     ALTER DATABASE ECM SET RECOVERY SIMPLE WITH NO_WAIT
 6     GO
 7     ALTER DATABASE ECM SET RECOVERY SIMPLE   --简单模式
 8     GO
 9     USE ECM
10     GO
11 DBCC SHRINKFILE (N‘SCS_log‘ , 11, TRUNCATEONLY)

--这里要留意,要使用数据库逻辑名

1 GO

2     USE [master]
 3     GO
 4  
 5     ALTER DATABASE ECM SET RECOVERY FULL WITH NO_WAIT
 6  
 7     GO
 8  
 9     ALTER DATABASE ECM SET RECOVERY FULL  --还原为完全模式
10      GO

优点:此清除日志所运行消耗的时间短,90GB的日志在分钟左右即可清除完毕,做完之后做个完全备份在分钟内

即可完成。

缺点: 不过此动作最好不要经常使用,因为它的运行会带来系统碎片。普通状态下LOG和DIFF的备份即可截断日志。

此语句使用的恰当环境:当系统的日志文件异常增大或者备份LOG时间太长可能影响生产的情况下使用。

方法二:

最简单的一种方法是:
分离数据库
剪切(注意是剪切,不是删除)*.ldf到其他目录
附加数据库,选中*.mdf文件,附加时新建一个日志文件
确认没有问题后,把日志文件删除。

如碰到无法分离,请先停掉服务再进行。

3、有关更多的技术分享,大家可以加入我们的技术群。

欢迎加入技术分享群:238916811

时间: 2024-08-06 07:54:34

SQL2008如何清空压缩数据库日志的相关文章

SQL Server 2005/2008压缩数据库日志的方法

适用于SQL Server 2005的方法 1 Backup Log DNName WITH no_log 2 GO 3 DUMP TRANSACTION DNName WITH no_log 4 GO 5 USE DNName 6 DBCC SHRINKFILE (2) 7 GO 说明:由于SQL Server 2008对文件和日志管理进行了优化,所以以上语句在SQL2005中可以运行但在SQL2008中已经被取消. 适用于SQL Server 2008的方法 1 USE [master] 2

SQL Server 2008删除或压缩数据库日志的方法

2010-09-20 20:15 由 于数据库日志增长被设置为“无限制”,所以时间一长日志文件必然会很大,一个400G的数据库居然有600G的LOG文件,严重占用了磁盘空间.由于主要 是做OLAP,所以数据库本身不会有大变动,所以日志也就没有多少作用了,因此想办法把数据库日志文件收缩到很小或者删除. 网 上搜索相关解决方案后,得到的答案丰富多彩,但是真正管用的方案并不多,这里分享一个csdn上找到的方法.这个方法讲述了SQL Server 2005和SQL Server 2008在收缩数据库日志

SqlServer压缩数据库日志

declare @dbName varchar(20)--数据库名称 declare @dbNamelog varchar(20)--数据库日志文件名称 --替换成自己的文件名称 select @dbName='dbname' select @dbNamelog='dbname_log' declare @sql nvarchar(2000) set @sql=' USE '+@dbName+' ALTER DATABASE '+@dbName+' SET RECOVERY SIMPLE WIT

带镜像的数据库日志压缩方案

带有镜像的数据库的压缩,如果有些情况没有按照步骤,可能不能将数据库压缩 1:  backup log BACKUP LOG [database name] TO  DISK = N'path\txxx.bak' WITH NOFORMAT, NOINIT,  NAME = database name-Transaction Log  Backup',  SKIP, NOREWIND, NOUNLOAD,  STATS = 102: 确保同步完成 注意确保 mirror 状态是已经同步完成. 3:

sql server压缩数据库和日志文件

DBCC SHRINKDATABASE 功能:压缩数据库 用法:DBCC SHRINKDATABASE tb_115sou_com 注意:只有产生许多未使用空间的操作(如截断表或删除表操作)后,执行收缩操作最有效,产生碎片较少.其他情况请勿执行,因为虽然释放了空间,但是会产生大量碎片 例子:我的数据库本来5g,执行后变成了2g,有没有很爽?doc.115sou.com DBCC SHRINKFILE 功能:压缩数据库文件 用法:DBCC SHRINKFILE (N'tb_115sou_com_l

sql2005,sql2008,sql2012清空日志语句

sql2005清空日志语句 Backup Log DbName WITH no_log GO DUMP TRANSACTION DbName WITH no_log GO USE DbName DBCC SHRINKFILE (2) GO sql2008,sql2012清空日志语句 ALTER DATABASE DbName SET RECOVERY SIMPLE WITH NO_WAIT ALTER DATABASE DbName SET RECOVERY SIMPLE DBCC SHRINK

删除指定数据库日志,可循环执行,清空Tempdb数据库

ALTER proc [dbo].[SYS_DB_Delete_Log] ( @DBName varchar(50) ) as -- 删除数据库日志 --Create by HDL 20141217 -- 用于将数据库日志文件删除重新创建 -- SYS_DB_Delete_Log 'ImportDB' -- update by hdl 20170928 处理删除日志后还原成原来模式 --update by hdl 20191209 修改处理TempDb begin /* use Z3 decla

清空数据库日志

适用于MSSQL2000.2005 use databasename BACKUP LOG databasename WITH NO_LOG DUMP TRANSACTION databasename WITH NO_LOG DBCC SHRINKDATABASE(databasename) --查看数据库日志文件名等信息 select name from sysfiles 适用于MSSQL2008.2012 USE[master] GO ALTER DATABASE databasename

数据库日志收缩大小

/*--特别注意 请按步骤进行,未进行前面的步骤,请不要做后面的步骤     否则可能损坏你的数据库.     --*/ 1.清空日志     DUMP     TRANSACTION     库名     WITH     NO_LOG 2.截断事务日志:     BACKUP   LOG   数据库名   WITH   NO_LOG 3.收缩数据库文件(如果不压缩,数据库的文件不会减小     企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件     --选择日志文件