12年老牌互聯(lián)網(wǎng)IT解決方案提供商
騰佑科技咨詢熱線咨詢熱線: 400-996-8756
工單提交 注冊(cè)/登錄
百度云服務(wù)中心騰佑科技公司
云服務(wù)器活動(dòng) 服務(wù)器租用 服務(wù)器托管 機(jī)柜租賃 帶寬租賃
  • 最新資訊
  • 熱門(mén)資訊
  • 最熱資訊
智能建站

SQL日志文件過(guò)大問(wèn)題的解決方法

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

簡(jiǎn)述:

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

DECLARE @LogicalFileName sysname,

@MaxMinutes INT,

@NewSize INT

USE data_db -- 要操作的數(shù)據(jù)庫(kù)名

SELECT @LogicalFileName = 'data_db_log', -- 日志文件名

@MaxMinutes = 10, -- Limit on time allowed to wrap log.

@NewSize = 100 -- 你想設(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 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語(yǔ)言實(shí)現(xiàn)。


點(diǎn)擊展開(kāi)全文

騰佑科技(www.mubashirfilms.com)成立于2009年,總部位于河南鄭州,是一家集互聯(lián)網(wǎng)基礎(chǔ)設(shè)施及軟硬件于一體化的高新技術(shù)企業(yè),具有IDC/ISP/ICP/云牌照、雙軟等資質(zhì),并擁有多個(gè)國(guó)家版權(quán)局認(rèn)證。公司自成立以來(lái),一直致力于發(fā)展互聯(lián)網(wǎng)IDC數(shù)據(jù)中心DataCenter、云計(jì)算Cloud、大數(shù)據(jù)BigDate、人工智能AI、內(nèi)容加速CDN、互聯(lián)網(wǎng)安全、軟件定制開(kāi)發(fā)等產(chǎn)品服務(wù)及行業(yè)客戶技術(shù)一體化智能解決方案;2018年成為百度智能云AI河南服務(wù)中心。

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

備案提交:0371-89913068

售后客服:0371-89913000

熱門(mén)活動(dòng)

百度云服務(wù)中心
  • 熱門(mén)資訊
  • 隨便看看