
如:shgzts为数据库名
dump transaction shgzts with no_log --截断日志
backup log shgzts with no_log --备份日志
dbcc shrinkdatabase(shgzts,truncateonly) --数据库收缩
守得云开见月明,花了一个上午结合前辈的博客,终于弄好了sqlserver2008的数据库日志收缩到1MB,分享给大家# 方法步骤1、执行SQL语句改成“简单模式”2、收缩数据库3、执行SQL语句改回“完全模式”## 第一步:执行SQL语句改成“简单模式”USE [master]GOALTER DATABASE SlowXWebDB (改成你需要进行收缩的数据库名) SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE SlowXWebDB (改成你需要进行收缩的数据库名) SET RECOVERY SIMPLE --改成简单模式GO## 第二步:进行数据库 *** 作相关界面截图和 *** 作假定:数据库名:SlowXWebDB 日志文件名:SlowXWebDB_Log
数据库日志文件过大需要清理1选择数据库右键点击任务-收缩-文件 注意:文件类型选为日志
2如下图选择需要收缩的大小,最小为0MB,本人实测最小只能到1MB,不过已经很满足了哈哈
3点击确认,几十G的日志文件,嗖的一下就瘦身完成了看下数据库日志文件清理后的效果!
## 第三步:执行SQL语句改成“完全模式”USE [master]GOALTER DATABASE SlowXWebDB (改成你需要进行收缩的数据库名)SET RECOVERY FULL WITH NO_WAITGOALTER DATABASE datebaseName(改成你需要进行收缩的数据库名)SET RECOVERY FULL --还原为完全模式GO==最后不要忘记实测下数据库是否能够正常使用==
这个问题我前几天正好碰上,所以,相关的关键点告诉你
特别提示:《在 *** 作之前请备份》:
1、SQL SERVER 2008 的日志会越来越大,如果是用于生产的,可能会大到可怕,反正我的数据库,前几天一看,不到1个月就十多个G的日志文件。
2、要收缩、清除其实很简单,关键点就一个:先把数据库的恢复模式从默认的“完整”改为“简单”。具体做法:对数据库点 右键 -》属性-》左边 选择页 中 点 “选项”-》找到 “恢复模式”,改成“简单”。
3、然后对数据库点 右键 -》任务-》收缩 -》文件 -》出来的界面中,文件类型 选 “日志”,点“确定”钮-》OK了。
4、再次提示,在 *** 作之前请备份,虽然我在 *** 作中没有碰上任务问题,但不保证你不出问题。
5、至于日志文件缩完了,你是否要把它改回“完整”模式,你自个看着办,我是让它一直简单,因为,以我的技术,要真的数据库崩溃了,有日志问题也是“然并卵”,反正我是一天自动两次异盘备份,加每二小时增量备份,最后再加双机热备(用软件实现的,那个软件据说要卖几万一套,具体叫什么就不说了,省得别人说我打广告,呵呵)。
6、看了一下微软的数据库镜像实现方案相关的东西,感觉太难了,不靠谱,有兴趣你可以去试试。
7、最后,顺便说,数据库的恢复模式的选择,对当前数据库的运行应该是没有什么影响的,也许对于会用日志文件进行数据查看和调整的人有用。
在SQL Server 2000/2005中可以快速压缩日志log文件,通过SQL,
方法一:
--BigData为数据库名DUMP TRANSACTION BigData WITH NO_LOG
BACKUP LOG BigData WITH NO_LOG
DBCC SHRINKDATABASE(BigData )
执行以上语句可以快速压缩日志文件到1M。
但是以上语句中前两行在SQL Server 2008下无法执行 ,
第一行提示“Incorrect syntax near the keyword 'TRANSACTION'”
第二行提示“One or more of the options (no_log) are not supported for this statement Review the documentation for supported options ”
第三行可以执行。但日志log文件没有任何变化。
原来SQL Server 2008 已经不再支持 DUMP TRANSACTION和BACKUP LOG WITH NO_LOG,
sql Server 2005说明中明确:包含 DUMP 语句是为了向后兼容。而 后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 使用 BACKUP。
SQL Server 2008说明:BACKUP LOG WITH NO_LOG 和 WITH TRUNCATE_ONLY 选项已废止。使用完整恢复模式或大容量日志恢复模式时,如果必须删除数据库中的日志备份链,请切换至简单恢复模式。有关详细信息,请参阅有关从完整恢复模式或大容量日志恢复模式切换的注意事项。
方法二:
use DB_NAMEsp_dboption DB_NAME, "trunc log on chkpt", true
checkpoint
sp_dboption DB_NAME, "autoshrink", true
方法三:(请提前备份文件!!)
Detach数据库。
删除log文件。
附加数据库,选移除log文件,此时SQL Server 会自动重新建立一个512K 的Log 文件。
方法四:
USE BigData;GO
BACKUP LOG DATABASENAME TO DISK='d:\testbak'
-- Shrink the truncated log file to 1 MB
DBCC SHRINKFILE (Bigdata_Log, 1);
GO
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
你可以试试查询分析器里执行:
use 库名
dump transaction 库名 with no_log
/这个命令的目的是把数据库的日志清空而不是停止记录执行完后,日志会清空但是数据库依然会继续记录/
dbcc shrinkfile(2,7)
/ 2 -> 要收缩的文件的fileid,对应sysfiles中的fileid。
7 -> 收缩文件到7 MB大小,如果没有指定,DBCC SHRINKFILE 将文件大小减少到初始默认文件大小 /
以上就是关于SQL数据库中日志收缩、截断等等是什么全部的内容,包括:SQL数据库中日志收缩、截断等等是什么、SQL SERVER 2000数据库日志文件过大如何解决、sql2008下的镜像数据库怎样做日志收缩等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)