數十年專注企業(yè)數字化轉型、智能化升級、企業(yè)上云解決方案服務商
工單提交 騰佑科技咨詢熱線咨詢熱線: 400-996-8756
百度云服務中心騰佑科技公司
云服務器活動 服務器租用 服務器托管 機柜租賃 帶寬租賃
  • 最新資訊
  • 熱門資訊
  • 最熱資訊
智能建站

SQL日志文件過大問題的解決方法

發(fā)布時間:2009-09-26 作者:admin

簡述:很多獨立服務器客戶反饋數據庫日志文件過大,嚴重浪費磁盤資源,數據庫實際大小為600M,日志文件實際大小為33M,但日志文件占用空間為2.8G!!!我們及時反饋給我們的研發(fā)部門,他們寫了一個腳本,就可以

很多獨立服務器客戶反饋數據庫日志文件過大,嚴重浪費磁盤資源,數據庫實際大小為600M, 日志文件實際大小為33M, 但日志文件占用空間為2.8G!!!
我們及時反饋給我們的研發(fā)部門,他們寫了一個腳本,就可以將日志文件縮小到自己想要的大小了。把代碼COPY到查詢分析器里,,然后修改其中的3個參數(紅色字體部分),運行即可(測試通過,請獨立服務器客戶測試)
-----
SET NOCOUNT ON

DECLARE @LogicalFileName sysname,

@MaxMinutes INT,

@NewSize INT

USE data_db -- 要操作的數據庫名

SELECT @LogicalFileName = 'data_db_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

以上代碼用T-SQL語言實現。


點擊展開全文

鄭州騰佑科技有限公司(以下簡稱“騰佑科技”)成立于2009年, 總部位于鄭州,是 一家致力于互聯(lián)網服務業(yè)的高新技術企業(yè),公司主營業(yè)務以互聯(lián)網數據中心、云計算、人 工智能、軟件開發(fā)、安全服務“互聯(lián)網+”行業(yè)解決方案及行業(yè)應用等相關業(yè)務。

售前咨詢熱線:400-996-8756

備案提交:0371-89913068

售后客服:0371-89913000

熱門活動

百度云服務中心
標簽:
  • 熱門資訊
  • 隨便看看