为什么收缩日志老是不成功 ?

abeng_2001 2002-11-07 08:36:00
我收缩日志,提示是“成功地收缩了数据库日志“
但是日志可用的空间并没有截断,大小一点没有改变
试了n此,都这样
我用的是sqlserver7
...全文
49 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhou_hua_jun668 2002-11-13
  • 打赏
  • 举报
回复
同意yxl1108(yxl1108) :
先备份日志,然后再收缩日志文件.
yxl1108 2002-11-09
  • 打赏
  • 举报
回复
我只用两句话

backup log dbname with truncate_only
dbcc shrinkfile(logfilename, TRUNCATEONLY)
  • 打赏
  • 举报
回复
可以在:SQL Query Analyzer下試試如下的語句, 一般會變成:1024KB, 如果大於1024kb, 可能.ldf確實不可能被壓縮得更小了

DECLARE @DATABASENAME VARCHAR(30),
@SQLSTR VARCHAR(300)
SELECT @DATABASENAME = 'sheep'

IF ISNULL(@DATABASENAME, '') = '' OR NOT EXISTS(SELECT name FROM master.dbo.sysdatabases WHERE name = @DATABASENAME)
SELECT @DATABASENAME = DB_NAME()
--PRINT @DATABASENAME

SELECT @SQLSTR = 'BACKUP LOG ' + @DATABASENAME + ' WITH NO_LOG ' + CHAR(10) +
'DBCC SHRINKDATABASE(' + @DATABASENAME + ', TRUNCATEONLY)' + CHAR(10) +
'USE ' + @DATABASENAME + CHAR(10) +
'DECLARE @LOGNAME VARCHAR(30)' + CHAR(10) +
'SELECT @LOGNAME = RTRIM(name) FROM dbo.sysfiles WHERE (status & 0x40) <> 0' + CHAR(10) +
'EXEC(''DBCC SHRINKFILE('' + @LOGNAME + '', TRUNCATEONLY)'')'
--PRINT @SQLSTR
EXEC(@SQLSTR)
GO
dongquestion 2002-11-08
  • 打赏
  • 举报
回复
以前没有办法,只好把LOG删除,现在又学会了一种办法,西西,爽啊
ravenkatte 2002-11-08
  • 打赏
  • 举报
回复
日志文件收缩完成后,文件不会马上变小。它会在以后逐步变小的。
CoolAbu 2002-11-08
  • 打赏
  • 举报
回复
嗯,icevi(按钮工厂) 姐姐说的对,采用你那种方法收缩日志,日志是慢慢变小的。你如果想看到明显的效果,可以参考gejanry(gejanry)的方法。
icevi 2002-11-07
  • 打赏
  • 举报
回复
日志文件收缩完成后,文件不会马上变小。它会在以后逐步变小的。
abeng_2001 2002-11-07
  • 打赏
  • 举报
回复
我在企业管理里完成的
gejanry 2002-11-07
  • 打赏
  • 举报
回复
你是用向导做还是代码呢?
给你一段代码试试
(转发)给你一段CODE.在SQL ANALYZER中运行,可以立即收缩日志.
run below script,you will shrink you database log files immediately,
in my experience,you need to run the script for 3 or 4 minutes before
stopping it manually
good luck!!!

/* Run "select * from sysfiles to get fileid you want to shrink"*/
use northwind
go
dbcc shrinkfile(2,notruncate)
dbcc shrinkfile(2,truncateonly)
create table t1(char1 char(4000))
go
declare @i int
select @i=0
while(1=1)
begin
while(@i<100)
begin
INSERT INTO T1 VALUES ('A')
SELECT @I=@I+1
END
TRUNCATE table T1
BACKUP LOG northwind with truncate_only
end
go

你也可以设置SQL SERVER自动收缩,
sp_dboption 'database','autoshrink','true'
sp_dboption 'database','trunc. log on chkpt.','true'

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧