- Rongsen.Com.Cn 版权所有 2008-2010 京ICP备08007000号 京公海网安备11010802026356号 朝阳网安编号:110105199号
- 北京黑客防线网安工作室-黑客防线网安服务器维护基地为您提供专业的服务器维护,企业网站维护,网站维护服务
- (建议采用1024×768分辨率,以达到最佳视觉效果) Powered by 黑客防线网安 ©2009-2010 www.rongsen.com.cn
 
  
    
| 作者:黑客防线网安SQL维护基地 来源:黑客防线网安SQL维护基地 浏览次数:0 | 
本文将向大家讲解一下怎样缩小 SQL Server 的数据库日志文件,比较简单,一看就能明白。
问:我的数据库实际大小为600MB,日志文件实际大小为33MB,但日志文件占用空间为2.8GB!我曾经试了几种方式,SHIRNK DATABASE,TRUNCATE LOG FILE, 都没办法将文件缩小。
答:你可以把下面的代码COPY到查询分析器里,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可。
以下是引用片段:
  ----- 
  SET NOCOUNT ON 
  DECLARE @LogicalFileName sysname, 
  @MaxMinutes INT, 
  @NewSize INT 
  USE Marias 
  -- 要操作的数据库名 
  SELECT @LogicalFileName = 'Marias_log' 
  -- 日志文件名 
  @MaxMinutes = 10, 
  -- Limit on time allowed to wrap log. 
  @NewSize = 100 
  -- 你想设定的日志文件的大小(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 
  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 
| 我要申请本站:N点 | 黑客防线官网 | | 
| 专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479 |