数据库

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

在SQL Server 2000查询分析器里面收缩数据库日志


发布日期:2019年11月19日
 
在SQL Server 2000查询分析器里面收缩数据库日志

操作环境Windows Advanced Server 英文版 + spSQL Server 英文企业版+sp

任务描述

我有一个数据库名称为Cisi它的数据库日志的名称为Cisi_log

这个日志的大小为M现在我要把它截断令其收缩为M

操作如下

在查询分析器里面用sa登录然后执行下列语句

Prog: Xinsoft

Time: :

SET NOCOUNT ON

DECLARE @LogicalFileName sysname

@MaxMinutes INT

@NewSize INT

USE Cisi 要操作的数据库名

SELECT@LogicalFileName = Cisi_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

Drop TABLE DummyTrans

CREATE TABLE DummyTrans

(DummyColumn char () not null)

DECLARE @Counter INT

@StartTime DATETIME

@TruncLogVARCHAR()

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

执行结果

Original Size of Cisi LOG is K pages or MB

Final Size of Cisi LOG is K pages or MB

数据库日志已成功地收缩为M

上一篇:用T-SQL获得当前连接客户端IP和机器名

下一篇:SQL入门:数据类型