数据库日志文件过大如何收缩?

数据库日志文件过大如何收缩?,第1张

网页链接我是用这个方法收缩的,可以将日志收缩到1MB

守得云开见月明,花了一个上午结合前辈的博客,终于弄好了sqlserver2008的数据库日志收缩到1MB,分享给大家

# 方法步骤

1、执行SQL语句改成“简单模式”

2、收缩数据库

3、执行SQL语句改回“完全模式”

## 第一步:执行SQL语句改成“简单模式”

USE [master]

GO

ALTER DATABASE  SlowXWebDB (改成你需要进行收缩的数据库名) SET RECOVERY SIMPLE WITH NO_WAIT

GO

ALTER DATABASE SlowXWebDB (改成你需要进行收缩的数据库名) SET RECOVERY SIMPLE --改成简单模式

GO

## 第二步:进行数据库 *** 作

相关界面截图和 *** 作

假定:

数据库名:SlowXWebDB

日志文件名:SlowXWebDB_Log

数据库日志文件过大需要清理

**1.选择数据库右键点击任务-收缩-文件   注意:文件类型选为日志**

2.如下图选择需要收缩的大小,最小为0MB,本人实测最小只能到1MB,不过已经很满足了哈哈**

3.点击确认,几十G的日志文件,嗖的一下就瘦身完成了****看下数据库日志文件清理后的效**果

## 第三步:执行SQL语句改成“完全模式”

USE [master]

GO

ALTER DATABASE SlowXWebDB (改成你需要进行收缩的数据库名)SET RECOVERY FULL WITH NO_WAIT

GO

ALTER DATABASE datebaseName(改成你需要进行收缩的数据库名)SET RECOVERY FULL --还原为完全模式

GO

==最后不要忘记实测下数据库是否能够正常使用==

网页链接

如果数据库是镜像,那么日志文件无法变小,除非备份日志后并重启数据库;

不过,备份日志可以截断日志文件,让日志文件空间重复使用,此时虽然日志文件有370G,但是实际上只用了一部分,未使用的,会用新日志覆盖上去,你定期备份日志来截断,sql:

备份日志可以截断日志,让日志空间可以循环使用,这样可以使日志文件的大小不再增长。

BACKUP LOG dbname TO DISK = 'e:\log20111122.bak'--备份完整日志

简单的办法就是设置日志模式为Simple了

ALTER DATABASE [数据库名] SET RECOVERY SIMPLE

再给一个看日志文件使用率的sql:

-- 查看当前数据库日志文件大小和使用率,size以8 KB 为单位,所以除128就是MB

SELECT name, data_space_id 文件组id, size/128 [文件大小(兆)],

    FILEPROPERTY(name, 'SpaceUsed')/128 [已用空间(兆)],

    size/128 - FILEPROPERTY(name, 'SpaceUsed')/128 [未用空间(兆)],

    FILEPROPERTY(name, 'SpaceUsed')*100.0/size [使用率(%)],

    max_size/128 [最大值(兆)],

    case is_percent_growth when 0 then cast(growth/128 as nvarchar) + '兆' else cast(growth as nvarchar) + '%' end 增长值,

    physical_name 物理路径

FROM sys.database_files a  ORDER BY a.[name]


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

原文地址: http://outofmemory.cn/sjk/6774948.html

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

发表评论

登录后才能评论

评论列表(0条)

保存