如何减小日志文件

xuxu7325 2004-12-27 10:28:11
我建的一个数据库的test_log.LDF 文件有几个G了 ,怎么减小这个log文件啊,还有啊是不是这个撑大了怎么缩小这个空间啊
...全文
386 点赞 收藏 10
写回复
10 条回复
老宛 2005年01月06日
治标的方法:DBCC SHRINKDATABASE(yourdatabase)
或 分离数据库 然后把test.ldf拷贝到其他地方,在 附加数据库

治本的方法:如果你的日志不是很重要的话,把数据库的故障还原模型设为简单,并且设置为自动收缩(在企业管理器里面可以操作)
回复 点赞
Softlee81307 2005年01月06日
DBCC SHRINKFILE(test_log,1)
回复 点赞
Ji秋风 2005年01月06日
SQL SERVER企业管理器→SQL SERVER组→服务器→数据库→选中数据库实体→右键→所有任务→分离数据库,然后到数据库所在物理路径下删除.ldf文件,再数据库右键→所有任务→附加数据库→完成操作。

使用这种方法,在SQL SERVER 2000是成功的,其他版本没试过。
回复 点赞
huazf 2005年01月06日
http://www.xunxin.cn
下载一个日志清理工具
回复 点赞
huzi 2005年01月05日
1: 在查询分析器里执行

BACKUP LOG 数据库名 WITH TRUNCATE_ONLY

2: 在企业管理器里收缩指定地数据库

结果LOG文件应该是1M
回复 点赞
yan13579 2005年01月04日
我不知道您有没有试过,我自己用的是MSSQL 7.0,有个数据库 (库名为slot)也有类似的问题出现,就是日志文件占用空间太大。我用了你的方法,详细步骤如下:
以下步骤都是 use slot
1. DUMP TRANSACTION slot WITH NO_LOG
2.BACKUP LOG slot WITH NO_LOG
3.select fileid ,groupid,name from sysfiles where groupid=0;
fileid groupid name
-----------------------------------------
2 0 slot_Log
得出日志文件的ID
3.DBCC SHRINKFILE(2)
4.EXEC sp_detach_db @dbname = 'slot'
第四个步骤出问题了,报告提示"database slot is in use",我就认为可能是slot这个数据库在使用不能所以不能分离。于是我转到master库去执行这个SQL语句
use master
go
EXEC sp_detach_db @dbname = 'slot'
结果还是提示这个错误:database slot is in use。不能执行该语句。
请问有没有人执行成功的?我用的是MSSQL 7.0,在企业管理器里右击并没有“分离数据库”这个功能,只能在查询分析器里执行。但是又不可能停掉整个SQL server,因为这样查询分析器就无法连接到Server。而我确定slot这个数据库是没有在进行数据库操作的,不知道为什么会有"database slot is in use"这个错误提示??
回复 点赞
631799 2005年01月04日
--压缩日志及数据库文件大小

/*--特别注意
请按步骤进行,未进行前面的步骤,请不要做后面的步骤
否则可能损坏你的数据库.
--*/

1.清空日志
DUMP TRANSACTION 库名 WITH NO_LOG

2.截断事务日志:
BACKUP LOG 数据库名 WITH NO_LOG

3.收缩数据库文件(如果不压缩,数据库的文件不会减小
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

也可以用SQL语句来完成
--收缩数据库
DBCC SHRINKDATABASE(客户资料)

--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles
DBCC SHRINKFILE(1)

4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)
a.分离数据库:
企业管理器--服务器--数据库--右键--分离数据库

b.在我的电脑中删除LOG文件

c.附加数据库:
企业管理器--服务器--数据库--右键--附加数据库

此法将生成新的LOG,大小只有500多K

或用代码:
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。

a.分离
EXEC sp_detach_db @dbname = 'pubs'

b.删除日志文件

c.再附加
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'

5.为了以后能自动收缩,做如下设置:
企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"

--SQL语句设置方式:
EXEC sp_dboption '数据库名', 'autoshrink', 'TRUE'

6.如果想以后不让它日志增长得太大
企业管理器--服务器--右键数据库--属性--事务日志
--将文件增长限制为xM(x是你允许的最大数据文件大小)

--SQL语句的设置方式:
alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)
回复 点赞
huazf 2005年01月04日
网上去下载一个"Sql Server日志清理工具"
http://www.xunxin.cn
回复 点赞
cookieswolfsun 2005年01月04日
下例将 UserDB 用户数据库中名为 DataFil1 的文件收缩到 7 MB。

USE UserDB
GO
DBCC SHRINKFILE (DataFil1, 7)
GO

回复 点赞
xuxu7325 2005年01月04日
怎么没人回啊
回复 点赞
发动态
发帖子
应用实例
创建于2007-09-28

1.1w+

社区成员

6.8w+

社区内容

MS-SQL Server 应用实例
社区公告
暂无公告