当前位置: 当前位置:首页 >域名 >清除SQL Server日志的方案有哪些?正文

清除SQL Server日志的方案有哪些?

作者:数据库 来源:系统运维 浏览: 【】 发布时间:2025-11-05 08:51:10 评论数:
清除SQL Server日志的方案有哪些?
复制SET NOCOUNT ON DECLARE @LogicalFileName sysname,清除   @MaxMinutes INT,   @NewSize INT   USE tablename -- 要操作的数据库名   SELECT @LogicalFileName = ’tablename_log’, -- 日志文件名   @MaxMinutes = 10, -- Limit on time allowed to wrap log.   @NewSize = 1 -- 你想设定的WordPress模板日志文件的服务器托管大小(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   1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.源码下载