您当前的位置: 首页 > 数据库教程 > MSSQL教程 > 手动清理SQL日志

手动清理SQL日志

作者:不详 来源:网络 发布时间: 2013-10-08 14:53 点击:
BACKUP LOG 数据库名字 WITH NO_LOG DBCC SHRINKDATABASE(数据库名字) =============/******/============ SET NOCOUNT ON DECLARE @LogicalFileName sysname, @MaxMinutes INT, @NewSize INT USE JMFPos -- 要操作的数据库名 SELECT @LogicalFileName = 'JMFPos_log '

手动清理SQL日志

 BACKUP LOG 数据库名字  WITH NO_LOG   DBCC SHRINKDATABASE(数据库名字)

=============/******/============

SET   NOCOUNT   ON 
DECLARE   @LogicalFileName   sysname, 
@MaxMinutes   INT, 
@NewSize   INT


USE   JMFPos   --   要操作的数据库名 
SELECT   @LogicalFileName   =   'JMFPos_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  

=============/******/============

分享到:
本文"手动清理SQL日志"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4