江西广告网

标题: 在SQL Server 2000查询分析器里面收缩数据库日志 [打印本页]

作者: 中华人民    时间: 2009-1-12 10:10
标题: 在SQL Server 2000查询分析器里面收缩数据库日志
  操作环境:Windows 2000 Advanced Server 英文版 sp4、SQL Server 2000英文企业版 sp3      任务描述:      我有一个数据库,名称为:Cisi。它的数据库日志的名称为:Cisi_log   这个日志的大小为1082M,现在我要把它截断,令其收缩为10M      操作如下:      在查询分析器里面,用sa登录,然后执行下列语句:      -- Prog: Xinsoft   -- Time: 2005-03-26 10:34      SET NOCOUNT ON   DECLARE @LogicalFileName sysname,   @MaxMinutes INT,   @NewSize INT      USE    Cisi          -- 要操作的数据库名   SELECT @LogicalFileName = 'Cisi_log', -- 日志文件名   @MaxMinutes = 10,           -- Limit on time allowed to wrap log.   @NewSize = 10             -- 你想设定的日志文件的大小(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   --Drop TABLE DummyTrans   CREATE TABLE DummyTrans   (DummyColumn char (8000) not null)      DECLARE @Counter  INT,   @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, @StartTime, GETDATE()) -- time has not expired   AND @OriginalSize = (SELECT size FROM sysfiles WHERE name =   @LogicalFileName)   AND (@OriginalSize * 8 /1024) > @NewSize   BEGIN -- Outer loop.   SELECT @Counter = 0   WHILE ((@Counter < @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 '   CONVERT(VARCHAR(30),(size*8/1024)) 'MB'   FROM sysfiles   WHERE name = @LogicalFileName   DROP TABLE DummyTrans   SET NOCOUNT OFF      执行结果:      Original Size of Cisi LOG is 138600 8K pages or 1082MB   Final Size of Cisi LOG is 1303 8K pages or 10MB      数据库日志已成功地收缩为10M。 <




欢迎光临 江西广告网 (http://bbs.jxadw.com/) Powered by Discuz! X3.2