你是用向导做还是代码呢?
给你一段代码试试
(转发)给你一段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'

解决方案 »

  1.   

    嗯,icevi(按钮工厂) 姐姐说的对,采用你那种方法收缩日志,日志是慢慢变小的。你如果想看到明显的效果,可以参考gejanry(gejanry)的方法。
      

  2.   

    以前没有办法,只好把LOG删除,现在又学会了一种办法,西西,爽啊
      

  3.   

    可以在: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 @DATABASENAMESELECT @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
      

  4.   

    我只用两句话backup log dbname with truncate_only
    dbcc shrinkfile(logfilename, TRUNCATEONLY)
      

  5.   

    同意yxl1108(yxl1108) :
    先备份日志,然后再收缩日志文件.