• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

缩小数据库日志另类方法_sqlserver

sqlserver 搞代码 7年前 (2018-06-16) 120次浏览 已收录 0个评论

–功能说明:缩小数据库日志文件
–作者:不详
–e.g:数据库名为abc
————————————————————–
SET NOCOUNT ON

http://www.gaodaima.com/35271.html缩小数据库日志另类方法_sqlserver

DECLARE @LOGICALFILENAME SYSNAME,
        @MAXMINUTES INT,
        @NEWSIZE INT
USE abc—要操作的数据库
SELECT @LOGICALFILENAME = ‘abc_LOG’,—日志文件名
       @MAXMINUTES = 10,—LIMIT ON TIME ALLOWED TO WRAP LOG.
       @NEWSIZE = 1—你想设定的日志文件大小(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 @COUNT 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 NOE EXPIRED
  AND @ORIGINALSIZE =(SELECT SIZE FROM SYSFILES WHERE NAME = @LOGICALFILENAME)
  AND (@ORIGINALSIZE*8/1024)>@NEWSIZE
BEGIN –OUTER LOOP.
    SELECT @COUNT = 0
        WHILE((@COUNT<@ORIGINALSIZE/16) AND (@COUNT<50000))
        BEGIN — UPDATE
            INSERT DUMMYTRANS VALUES (‘FILL LOG’)
            DELETE DUMMYTRANS
            SELECT @COUNT = @COUNT + 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

欢迎大家阅读《缩小数据库日志另类方法_sqlserver,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:缩小数据库日志另类方法_sqlserver
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址