server
方法一:
将数据库日志文件改成简单日志模式
方法二:
DUMPTRANSACTION你的数据库名WITHNO_LOG
BACKUPLOG你的数据库名WITHNO_LOG
DBCCSHRINKDATABASE(你的数据库名)
EXECsp_dboption'你的数据库名','autoshrink','TRUE'
方法三:
把代码COPY到查询分析器里,,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可(我已经用过多次了)
-----
SETNOCOUNTON
DECLARE@LogicalFileNamesysname,
@MaxMinutesINT,
@NewSizeINT
USEMarias--要操作的数据库名
SELECT@LogicalFileName='Marias_log',--日志文件名
@MaxMinutes=10,--Limit on time allowed to wrap log.
@NewSize=100--你想设定的日志文件的大小(M)
--Setup / initialize
DECLARE@OriginalSizeint
SELECT@OriginalSize=size
FROMsysfiles
WHEREname=@LogicalFileName
SELECT'Original Size of'+db_name()+'LOG is'+
CONVERT(VARCHAR(30),@OriginalSize)+'8K pages or'+
CONVERT(VARCHAR(30),(@OriginalSize*8/1024))+'MB'
FROMsysfiles
WHEREname=@LogicalFileName
CREATETABLEDummyTrans
(DummyColumnchar(8000)notnull)
DECLARE@CounterINT,
@StartTimeDATETIME,
@TruncLogVARCHAR(255)
SELECT@StartTime=GETDATE(),
@TruncLog='BACKUP LOG'+db_name()+'WITH TRUNCATE_ONLY'
DBCCSHRINKFILE (@LogicalFileName,@NewSize)
EXEC(@TruncLog)
--Wrap the log if necessary.
WHILE@MaxMinutes>DATEDIFF(mi,@StartTime,GETDATE())--time has not expired
AND@OriginalSize=(SELECTsizeFROMsysfilesWHEREname=@LogicalFileName)
AND(@OriginalSize*8/1024)>@NewSize
BEGIN--Outer loop.
SELECT@Counter=0
WHILE((@Counter<@OriginalSize/16)AND(@Counter<50000))
BEGIN--update
INSERTDummyTransVALUES('Fill Log')
DELETEDummyTrans
SELECT@Counter=@Counter+1
END
EXEC(@TruncLog)
END
SELECT'Final Size of'+db_name()+'LOG is'+
CONVERT(VARCHAR(30),size)+'8K pages or'+
CONVERT(VARCHAR(30),(size*8/1024))+'MB'
FROMsysfiles
WHEREname=@LogicalFileName
DROPTABLEDummyTrans
SETNOCOUNTOFF