数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

如何缩小SQL数据库日记的大小


发布日期:2023年07月18日
 
如何缩小SQL数据库日记的大小

以下是引用片段

缩小SQL数据库日记的大小

一般情况下当SQL数据库日记文件太大时很难将其压缩到更小

通过下面的这段批处理SQL程序序就可以实现了(试用通过!!!)

修改下面的三个备注处的参数即可COPY到查询分析器里执行了

SET NOCOUNT ON

DECLARE @LogicalFileName sysname

@MaxMinutes INT

@NewSize INT

USE dvbbs 要操作的数据库名

SELECT @LogicalFileName = dvbbs_log 日志文件名

@MaxMinutes = Limit on time allowed to wrap log

@NewSize = 你想设定的日志文件的大小(M)

Setup / initialize

DECLARE @OriginalSize int

SELECT @OriginalSize = size

FROM sysfiles

WHERE name = @LogicalFileName

SELECT Original Size of + db_name() + LOG is +

CONVERT(VARCHAR()@OriginalSize) + K pages or +

CONVERT(VARCHAR()(@OriginalSize*/)) + MB

FROM sysfiles

WHERE name = @LogicalFileName

CREATE TABLE DummyTrans

(DummyColumn char () not null)

DECLARE @Counter INT

@StartTime DATETIME

@TruncLog VARCHAR()

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 @StartTime GETDATE()) time has not expired

AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)

AND (@OriginalSize * /) > @NewSize

BEGIN Outer loop

SELECT @Counter =

WHILE ((@Counter < @OriginalSize / ) AND (@Counter < ))

BEGIN update

INSERT DummyTrans valueS (Fill Log)

DELETE DummyTrans

SELECT @Counter = @Counter +

END

EXEC (@TruncLog)

END

SELECT Final Size of + db_name() + LOG is +

CONVERT(VARCHAR()size) + K pages or +

CONVERT(VARCHAR()(size*/)) + MB

FROM sysfiles

WHERE name = @LogicalFileName

DROP TABLE DummyTrans

SET NOCOUNT OFF

上一篇:使用 SQL Server 2005中的 CLR 集成(2)

下一篇:MS SQL Server 7.0 性能优化指南