Home >Database >Mysql Tutorial >SQL 日志清除常用的方法总结

SQL 日志清除常用的方法总结

WBOY
WBOYOriginal
2016-06-07 17:49:271235browse

文章总结了多种SQL 日志清除常用的方法,有需要的朋友可参考一下本文章。

1 首先确认的是你能直接删除,他们是SQL SERVER 的错误日志,而不是数据库日志。

2 日志过大说明你没有截断错误日志,错误日志是可以截断的,进入你的数据库输入DBCC ERRORLOG

每执行一次,当前的错误日志推出,让后建立新的错误日志,你只能删除 ERRORLOG1 --- 6的错误日志

没有号码的是正在使用的日志,删除会报错,如果它比较大,就DBCC ERRORLOG,而后他会变成
ERRORLOG+编号,你就可以删除了,另外建议你把这些ERRORLOG 放到其他盘符,比较好管理


-收缩日志

 代码如下 复制代码

  USE [master] 
GO 
ALTER DATABASE mydatabase SET RECOVERY SIMPLE WITH NO_WAIT 
GO 
ALTER DATABASE mydatabase SET RECOVERY SIMPLE   --简单模式
GO 
USE mydatabase
GO 
DBCC SHRINKFILE (N'mydatabase_Log' , 11, TRUNCATEONLY) 
GO 
USE [master] 
GO 
ALTER DATABASE mydatabase SET RECOVERY FULL WITH NO_WAIT 
GO 
ALTER DATABASE mydatabase SET RECOVERY FULL  --还原为完全模式
GO

其它方法

在查询分析器中顺序执行以下三步,其中   databasename   为你的数据库文件名

 代码如下 复制代码

1.清空日志:DUMP   TRANSACTION   databasename   WITH   NO_LOG  

2.截断事务日志:BACKUP   LOG   databasename   WITH   NO_LOG  

3.收缩数据库:DBCC   SHRINKDATABASE(databasename)  


--//////////////////////////////////////////////////////////////////

SQL   Server日志清空方法  

清空日志。
  
1.打开查询分析器,输入命令   DUMP   TRANSACTION   数据库名   WITH   NO_LOG  
2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

一个删除错误日志程序

sql server日志为啥会增长很快, 
有一个程序每5秒钟写数据一次,然后数据库日志经常增长很快,怎么避免这样的事情发生呢? 
怎么能让sql server日志增长不要这么快,数据文件才100M日志文件居然1G多。

 代码如下 复制代码
--清除日志:
DECLARE @LogicalFileName sysname,
        @MaxMinutes INT,
        @NewSize INT
USE     szwzcheck             -- 要操作的数据库名
SELECT  @LogicalFileName = 'szwzcheck_Log',  -- 日志文件名
@MaxMinutes = 10,               -- Limit on time allowed to wrap log.
        @NewSize = 20                  -- 你想设定的日志文件的大小(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
      AND @OriginalSize = (SELECT size FROM sysfiles WHERE name =
@LogicalFileName) AND (@OriginalSize * 8 /1024) > @NewSize 
  BEGIN -- Outer loop.
    SELECT @Counter = 0
    WHILE  ((@Counter       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
 


--把szwzcheck换成你数据库的名字即可,在查询分析器里面运行。

--收缩日志:企业管理器--所有任务--收缩数据库--文件--选日志文件收缩

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn