注册
 找回密码
 注册
江西广告网
查看: 295|回复: 0
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2009-1-12 10:10:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
  操作环境: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。 <
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表