可以按自己要求来缩小log文件的大小。SET NOCOUNT ON
DECLARE @LogicaFILENAME SYSNAME,
        @MAXMINUTES INT,
        @NEWSIZE INI
USE MARIAS---要操作的数据库
SELECT @LOGICALFILENAME = 'MARIAS_LOG',---日志文件名
@MAXMINUTES = 10,---LIMIT ON TIME ALLOWED TO WRAP LOG.
@NEWSIZE = 100---你想设定的日志文件大小(M)
--SETUP /INITIALIZE
DECLARE @ORIGINALSIZE INT
SELECT @ORIGINALSIZE = SIZE
FROM SYSFILES
WHERE NAME = @LOGICALFILENAME
SELECT 'ORIGINAL SIZE OF' + DB_NAME() + 'LOG IS' +
CONVERT(VARCHAR(30),@ORIGINALSIZE)+'8K PAGES OR'+
CONVERT(VARCHAR(30,(@ORIGINALSIZE*8/1024))+'MB'
FROM SYSFILES
WHERE NAME = @LOGICALFILENAME
CREATE TABLE DUMMYTRANS
(DUMMYCOLUMN CHAR(8000) NOT NULL)
DECLARE @COUNTER INI,
@STARTTIME DATETIME,
@TRUNCLOG VARCHAR(255)
SELECT @STARTTIME = GETDATE(),
@TRUNCLOG = 'BACKUP LOG'+DB_NAME()+'WITH TRUNCATE_ONLY'
DBCC SHRINKFILE (@LOGICALFILENAME,@NEWSIZE)
EXEC(@TRUNCLOG)
--WRAP THE LOG IF NECESSARY
WHILE @MAXMINUTES >DATEDIFF(MI,@STARTIME,GETDATE()) --TIME HAS NOE EXPIRED
AND @ORIGINALSIZE =(SELECT SIZE FROM SYSFILE WHERE NAME = @LOGICALFILENAME)
AND (@ORIGINALSIZE*8/1024)>@NEWSIZE
BEGIN --OUTER LOOP.
SELECT @COUNT = 0
WHILE((@COUNT<@ORIGINALSIZE/16) AND (@COUNTER<50000))
BEGIN -- UPDATE
INSERT DUMMYTRANS VALUES ('FILL LOG'
DELETE DUMMYTRANS
SELECT @COUNTER = @COUNTER + 1
END
EXEC (@TRUNCLOG)
END
SELECT 'FINAL SIZE OF' + db_NAME() +'LOG IS'+
CONVERT(VARCHAR(30,SIZE)+'8K PAGES OR'+
CONVER(VARCHAR(30,(SIZE*8/1024))+'MB'
FROM SYSFILES
WHERE NAME = @LOGICALFILENAME
DROP TABLE DUMMYTRANS
SET NOCUNT OFF