12
返回列表 发新帖
楼主: 无心呢喃

日志文件太大,怎么清理??

[复制链接]
论坛徽章:
3
ITPUB元老
日期:2005-02-28 12:57:00授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
11#
发表于 2003-6-20 17:36 | 只看该作者
方法1:
先在Query Analyzer中执行如下的语句:
use yourDBName
go
exec sp_dboption yourDBName,'trunc. log on chkpt.',true
--这条语句的作用就是让这个DB的写操作(如insert,update,delete)不写日志,如果你不用日志来做数据库的恢复的话,那么这个选项可以永远将其置为true状态。
然后执行
create table test
(
        a int
)
go
insert into test values(1);
接着执行:
backup log yourDBName with truncate_log
go
然后再执行:
select * from sysfiles
去查看日志文件在DB中的逻辑名称和真正使用了的容量,假定逻辑名称为L,容量为M
最后执行:
dbcc shrinkfile (L,M+10)        --留出10MB的空闲空间,其余的容量全部收缩掉
go
reconfigure with override

方法2:
第一步:
先备份整个数据库以备不测
第二步:
备份结束后,在Query Analyzer中执行如下的语句:
exec sp_detach_db yourDBName,true        --卸除这个DB在MSSQL中的注册信息
第三步:
到日志的物理文件所在的目录中去删除该日志文件或者将该日志文件移出该目录
第四步:
在Query Analyzer中执行如下的语句:
exec sp_attach_single_file_db yourDBName,'d:\mssql7\data\yourDBName_data.mdf'       
--以单文件的方式注册该DB,如果成功则MSSQL将自动为这个DB生成一个500K的日志文件。

使用道具 举报

回复
论坛徽章:
0
12#
 楼主| 发表于 2003-6-29 12:05 | 只看该作者
谢谢各位,我还有一个问题:
tempdb 数据库始终使用简单恢复模式,不能切换到其它恢复模式。日志截断始终发生在 tempdb 中的检查点上。
但现在sqlserver报tempdb日志满了,而且用企业管理器看不到任何数据库, 用QA可以看到, 数据库运作正常,这是什么原因?

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表