日誌檔案過大清理
方法一:
Backup Log DBname with no_log
go
dump transaction DBname with no_log
go
USE DBname
DBCC SHRINKFILE (2)
Go
Backup Log DBname with no_log
go
dump transaction DBname with no_log
go
USE DBname
DBCC SHRINKFILE (2)
Go
方法二:
設定檢查點,自動截斷日誌
設定檢查點,自動截斷日誌
一般情況下,SQL資料庫的收縮並不能很大程度上減小資料庫大小,其主要作用是收縮日誌大小,應當定期進行此操作以免資料庫日誌過大
1、設定資料庫模式為簡單模式:開啟SQL企業管理器,在控制檯根目錄中依次點開Microsoft SQL Server-->SQL Server組-->雙擊開啟你的伺服器-->雙擊開啟資料庫目錄-->選擇你的資料庫名稱(如使用者資料庫cwbase1)-->然後點選右鍵選擇屬性-->選擇選項-->在故障還原的模式中選擇“簡單”,然後按確定儲存
2、在當前資料庫上點右鍵,看所有任務中的收縮資料庫,一般裡面的預設設定不用調整,直接點確定
3、收縮資料庫完成後,建議將您的資料庫屬性重新設定為標準模式,操作方法同第一點,因為日誌在一些異常情況下往往是恢復資料庫的重要依據
1、設定資料庫模式為簡單模式:開啟SQL企業管理器,在控制檯根目錄中依次點開Microsoft SQL Server-->SQL Server組-->雙擊開啟你的伺服器-->雙擊開啟資料庫目錄-->選擇你的資料庫名稱(如使用者資料庫cwbase1)-->然後點選右鍵選擇屬性-->選擇選項-->在故障還原的模式中選擇“簡單”,然後按確定儲存
2、在當前資料庫上點右鍵,看所有任務中的收縮資料庫,一般裡面的預設設定不用調整,直接點確定
3、收縮資料庫完成後,建議將您的資料庫屬性重新設定為標準模式,操作方法同第一點,因為日誌在一些異常情況下往往是恢復資料庫的重要依據
方法三:透過SQL收縮日誌
把程式碼複製到查詢分析器裡,然後修改其中的3個引數(資料庫名,日誌檔名,和目標日誌檔案的大小),執行即可
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE tablename -- 要操作的資料庫名
SELECT @LogicalFileName = 'tablename_log', -- 日誌檔名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 1 -- 你想設定的日誌檔案的大小(M)
SELECT @LogicalFileName = 'tablename_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 @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'
@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
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 server的日誌檔案不是即時寫入資料庫主檔案的,如處理不當,會造成資料的損失。1、操作前請斷開所有資料庫連線。
2、分離資料庫
分離資料庫:企業管理器->伺服器->資料庫->cwbase1->右鍵->分離資料庫
分離後,cwbase1資料庫被刪除,但保留了資料檔案和日誌檔案
3、刪除log物理檔案
刪除LOG物理檔案,然後附加資料庫: 企業管理器->伺服器->資料庫->右鍵->附加資料庫
此法生成新的log,大小隻有500多k。
2、分離資料庫
分離資料庫:企業管理器->伺服器->資料庫->cwbase1->右鍵->分離資料庫
分離後,cwbase1資料庫被刪除,但保留了資料檔案和日誌檔案
3、刪除log物理檔案
刪除LOG物理檔案,然後附加資料庫: 企業管理器->伺服器->資料庫->右鍵->附加資料庫
此法生成新的log,大小隻有500多k。
注意:建議使用第一種方法。操作前請確保所有操作員都已經推出系統,斷開資料庫的連線。
以上操作前,請務必做好資料備份!
1.sql server 2005 清除日誌語句
dump transaction 資料庫名稱 with no_log
backup log 資料庫名稱 with no_log
dbcc shrinkdatabase(資料庫名稱)
backup log 資料庫名稱 with no_log
dbcc shrinkdatabase(資料庫名稱)
2.sql server 2008 清除日誌語句
sp_dboption 資料庫名稱, "trunc. log on chkpt.", true
checkpoint
sp_dboption 資料庫名稱, "autoshrink", true
checkpoint
sp_dboption 資料庫名稱, "autoshrink", true
清除SQLSERVER資料庫日誌檔案的方法:
1、先將這個資料庫解除安裝:
EXEC sp_detach_db 'database_name', 'true'
然後將該資料庫所對應的Log檔案刪掉;
最後,再將這個資料庫註冊到系統裡面:
EXEC sp_detach_db 'database_name', 'true'
然後將該資料庫所對應的Log檔案刪掉;
最後,再將這個資料庫註冊到系統裡面:
EXEC sp_attach_db @dbname = N'database_name',
@filename1 = N'e:\mssql7\data\database_name_data.mdf'
@filename1 = N'e:\mssql7\data\database_name_data.mdf'
2、資料庫上點右鍵-所有任務-收縮資料庫-選擇收縮檔案為LOG 。
3、清除SQLSERVER資料庫日誌的方法:
*******下面是轉發的郵件*****
The shrinking of log files is not immediate in SQL Server 7.0. The
shrinking of log files does not occur until the active portion of the
log moves. As updates are performed on the database, the shrink
operation occurs at checkpoints or transaction log backups. Each log
file is marked with the target_percent for the shrink operation. Each
subsequent log backup or log truncation attempts to shrink the file to
bring its size as close to the target_percent as possible. Because a log
file can be shrunk only to a virtual log file boundary, it may not be
possible to shrink a log file to a size smaller than the size of a
virtual log file even if it is not being used. Please refer to SQL Book
Online for the details.
shrinking of log files does not occur until the active portion of the
log moves. As updates are performed on the database, the shrink
operation occurs at checkpoints or transaction log backups. Each log
file is marked with the target_percent for the shrink operation. Each
subsequent log backup or log truncation attempts to shrink the file to
bring its size as close to the target_percent as possible. Because a log
file can be shrunk only to a virtual log file boundary, it may not be
possible to shrink a log file to a size smaller than the size of a
virtual log file even if it is not being used. Please refer to SQL Book
Online for the details.
RESOLUTION
Below script will help to shrink the log file immediately, pls keep it
running for 3~4 minutes and then stop it manually.
running for 3~4 minutes and then stop it manually.
\* Run "select fileid, name,filename from ..sysfiles" to get
the fileid which you want to shrink *\
the fileid which you want to shrink *\
use
go
dbcc shrinkfile(fileid,notruncate)
dbcc shrinkfile(fileid,truncateonly)
create table t1 (char1 char(4000))
go
declare @i int
select @i = 0
while (1 = 1)
begin
while (@i < 100)
begin
insert into t1 values ('a') select @i = @i +1
end
truncate table t1
backup log with truncate_only
end
go
go
dbcc shrinkfile(fileid,notruncate)
dbcc shrinkfile(fileid,truncateonly)
create table t1 (char1 char(4000))
go
declare @i int
select @i = 0
while (1 = 1)
begin
while (@i < 100)
begin
insert into t1 values ('a') select @i = @i +1
end
truncate table t1
backup log with truncate_only
end
go
*****轉發內容結束*****
SQLServer資料庫日誌清理 清除sqlserver2005日誌
有時候當系統執行時間比較長的時候,我們把備份的資料庫還原的時候發現,資料庫中資料檔案和日誌檔案變的好大,特別是日誌檔案。現在給大家介紹如何清理SQLServer資料庫日誌;有兩種方法如下:
方法一:手動清除sqlserver2005日誌
1.右鍵在清除日誌的資料庫,如“TestDB”,點選[新建查詢(Q)]
2.輸入以下SQL語句,其中“TestDB”是資料庫名稱
DUMP TRANSACTION TestDB WITH NO_LOG
3.執行該SQL,成功後繼續以下操作
4.右鍵該資料庫節點,點選[任務(T)] -> [收縮(S)] -> [檔案(F)]
5.在彈出的“收縮檔案”對話方塊中,將“檔案型別(T)”選為“日誌”,將“收縮操作”選中“在釋放未使用的空間前重新組織頁(O)”
6.在“將檔案收縮到(K)”文字框中輸入後面提示的最小大小的數值,點選[確定]即可。
2.輸入以下SQL語句,其中“TestDB”是資料庫名稱
DUMP TRANSACTION TestDB WITH NO_LOG
3.執行該SQL,成功後繼續以下操作
4.右鍵該資料庫節點,點選[任務(T)] -> [收縮(S)] -> [檔案(F)]
5.在彈出的“收縮檔案”對話方塊中,將“檔案型別(T)”選為“日誌”,將“收縮操作”選中“在釋放未使用的空間前重新組織頁(O)”
6.在“將檔案收縮到(K)”文字框中輸入後面提示的最小大小的數值,點選[確定]即可。
方法二:用工具軟體SqlServer日誌清除專家3.0,可對Sql Server 6.5到Sql Server 2005的各種版本的資料庫日誌的清除;其使用方法非常簡單;SqlServer 日誌清除專家綠色版 V3.5下載地址:
下載地址
方法一操作起來相對麻煩一些,可是可以定製日誌的大小,清理日誌後其相應的資料庫資料檔案在也會變小,資料也不會丟失;方法二操作比較方便,可以把資料庫中的日誌檔案清理到1M大小;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9522838/viewspace-2641752/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux 使用 crontab 定時拆分日誌、清理過期檔案Linux
- Oracle歸檔日誌清理Oracle
- 【LOG】Oracle資料庫清理日誌、跟蹤檔案利器Oracle資料庫
- Linux下日誌檔案過大解決方案Linux
- PostgreSQL的xlog/Wal歸檔及日誌清理SQL
- nginx日誌檔案按天記錄定時清理迴圈記錄Nginx
- oracle清理trace、alert、aud、listener等日誌檔案Oracle
- 【MySQL日誌】MySQL日誌檔案初級管理MySql
- java專案日誌配置檔案Java
- docker 容器日誌清理方案Docker
- Golang 快速讀取處理大日誌檔案工具Golang
- SpringBoot通過yml和xml檔案配置日誌輸出Spring BootXML
- sybase iq日誌檔案管理
- MySQL InnoDB日誌檔案配置MySql
- SpringBoot指定日誌檔案和日誌Profile功能Spring Boot
- Laravel 指定日誌檔案記錄任意日誌Laravel
- 探究MySQL中的日誌檔案MySql
- 日誌檔案使用小結(轉)
- mysql的日誌檔案詳解MySql
- lumen 日誌按天生成檔案
- tempdb日誌檔案暴增分析
- nginx日誌配置檔案說明Nginx
- linux 日誌log檔案 截斷Linux
- zookeeper 清理snapshot及事務日誌
- 操作日誌記錄(包括輸出至自定義日誌檔案)
- VSCode 檔案清理VSCode
- 在Linux中,有一堆日誌檔案,如何刪除7天前的日誌檔案?Linux
- Linux檔案系統與日誌分析Linux
- Java實時讀取日誌檔案Java
- 限制 Apache日誌檔案大小的方法Apache
- selenium-日誌檔案的使用(十二)
- zabbix agent 日誌檔案輪詢分析
- 12c日誌檔案路徑
- SQL語句收縮日誌檔案SQL
- linux檔案系統和日誌分析Linux
- Linux 日誌檔案系統如何工作Linux
- oracle 刪除過期的歸檔日誌Oracle
- 這麼分析大檔案日誌,以後就不用加班捲了!