數(shù)據(jù)庫清除日志文件(LDF文件過大)
更新時間:2009年11月09日 17:18:30 作者:
數(shù)據(jù)庫清除日志文件,(LDF文件過大),一般情況下,有更簡單的方法,需要在sqlserver查詢執(zhí)行。
清除日志:
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE szwzcheck -- 要操作的數(shù)據(jù)庫名
SELECT @LogicalFileName = 'szwzcheck_Log', -- 日志文件名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 20 -- 你想設(shè)定的日志文件的大小(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 < @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
把szwzcheck換成你數(shù)據(jù)庫的名字即可,在查詢分析器里面運行。
有全角的空格(為了顯示好看),你自己把他換一下.
腳本之家編輯注:
一般情況下,用下面的語句更簡單
DUMP TRANSACTION [jb51] WITH NO_LOG
BACKUP LOG [jb51] WITH NO_LOG
DBCC SHRINKDATABASE([jb51])
其中jb51就是你要處理的數(shù)據(jù)庫名。
復(fù)制代碼 代碼如下:
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE szwzcheck -- 要操作的數(shù)據(jù)庫名
SELECT @LogicalFileName = 'szwzcheck_Log', -- 日志文件名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 20 -- 你想設(shè)定的日志文件的大小(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 < @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
把szwzcheck換成你數(shù)據(jù)庫的名字即可,在查詢分析器里面運行。
有全角的空格(為了顯示好看),你自己把他換一下.
腳本之家編輯注:
一般情況下,用下面的語句更簡單
復(fù)制代碼 代碼如下:
DUMP TRANSACTION [jb51] WITH NO_LOG
BACKUP LOG [jb51] WITH NO_LOG
DBCC SHRINKDATABASE([jb51])
其中jb51就是你要處理的數(shù)據(jù)庫名。
相關(guān)文章
SQL?Server數(shù)據(jù)庫如何查看表的數(shù)據(jù)內(nèi)容
查詢數(shù)據(jù)在數(shù)據(jù)庫的操作中相當(dāng)重要的,在項目實訓(xùn)中查詢是經(jīng)常要用到的,所以掌握數(shù)據(jù)庫的查詢是基本要求,這篇文章主要給大家介紹了關(guān)于SQL?Server數(shù)據(jù)庫如何查看表的數(shù)據(jù)內(nèi)容的相關(guān)資料,需要的朋友可以參考下2023-11-11
sql server數(shù)據(jù)庫中raiserror函數(shù)用法的詳細(xì)介紹
這篇文章主要介紹了sql server數(shù)據(jù)庫中raiserror函數(shù)用法的詳細(xì)介紹,raiserror用于拋出一個異常或錯誤,讓這個錯誤可以被程序捕捉到。對此感興趣的可以了解一下2020-07-07
總結(jié)SQL執(zhí)行進(jìn)展優(yōu)化方法
談到優(yōu)化就必然要涉及索引,就像要講鎖必然要說事務(wù)一樣,建議讀者先了解一下索引。2015-08-08
SQL?server數(shù)據(jù)庫日志文件收縮操作方法
日常使用數(shù)據(jù)庫可能存在日志每天增長10G或以上,太恐怖了!數(shù)據(jù)量過大導(dǎo)致服務(wù)器卡死,內(nèi)存溢出,執(zhí)行Sql過慢等問題,這篇文章主要給大家介紹了關(guān)于SQL?server數(shù)據(jù)庫日志文件收縮操作的相關(guān)資料,需要的朋友可以參考下2024-02-02
查詢SQL Server數(shù)據(jù)庫服務(wù)器IP地址的多種有效方法
作為數(shù)據(jù)庫管理員或開發(fā)人員,了解如何查詢SQL Server數(shù)據(jù)庫服務(wù)器的IP地址是一項重要技能,本文將介紹幾種簡單而有效的方法,幫助你輕松獲取這一信息,無論你是新手還是經(jīng)驗豐富的專業(yè)人士,這些方法都能為你提供所需的信息,需要的朋友可以參考下2025-02-02
SQLServer設(shè)置客戶端使用IP地址登錄的圖文詳解
這篇文章主要介紹了SQLServer設(shè)置客戶端使用IP地址登錄的圖文詳解,本文通過圖文并茂的形式給大家介紹的非常想詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
數(shù)據(jù)庫表的創(chuàng)建、管理和數(shù)據(jù)操作(實驗一)
這篇文章主要介紹了數(shù)據(jù)庫中表的創(chuàng)建、管理和數(shù)據(jù)操作,感興趣的小伙伴可以參考一下2015-08-08

