SQL数据库中日志收缩、截断等等是什么

SQL数据库中日志收缩、截断等等是什么,第1张

如: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_NAME

sp_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下的镜像数据库怎样做日志收缩等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10184954.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存