最近服務(wù)器執(zhí)行收縮日志文件大小的job老是報(bào)錯(cuò)
我所用的一個(gè)批量收縮日志腳本
USE [master] GO /****** Object: StoredProcedure [dbo].[ShrinkUser_DATABASESLogFile] Script Date: 01/05/2016 09:52:39 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROC [dbo].[ShrinkUser_DATABASESLogFile] AS BEGIN DECLARE @DBNAME NVARCHAR(MAX) DECLARE @SQL NVARCHAR(MAX) --臨時(shí)表保存數(shù)據(jù) CREATE TABLE #DataBaseServerData ( ID INT IDENTITY(1, 1) , DBNAME NVARCHAR(MAX) , Log_Total_MB DECIMAL(18, 1) NOT NULL , Log_FREE_SPACE_MB DECIMAL(18, 1) NOT NULL ) --游標(biāo) DECLARE @itemCur CURSOR SET @itemCur = CURSOR FOR SELECT name from SYS.[databases] WHERE [name] NOT IN ('MASTER','MODEL','TEMPDB','MSDB','ReportServer','ReportServerTempDB','distribution') and state=0 OPEN @itemCur FETCH NEXT FROM @itemCur INTO @DBNAME WHILE @@FETCH_STATUS = 0 BEGIN SET @SQL=N'USE ['+@DBNAME+'];'+CHAR(10) +' DECLARE @TotalLogSpace DECIMAL(18, 1) DECLARE @FreeLogSpace DECIMAL(18, 1) DECLARE @filename NVARCHAR(MAX) DECLARE @CanshrinkSize BIGINT DECLARE @SQL1 nvarchar(MAX) SELECT @TotalLogSpace=(SUM(CONVERT(dec(17, 2), sysfiles.size)) / 128) FROM dbo.sysfiles AS sysfiles WHERE [groupid]=0 SELECT @FreeLogSpace = ( SUM(( size - FILEPROPERTY(name, ''SpaceUsed'') )) )/ 128.0 FROM sys.database_files WHERE [type] = 1 SELECT @filename=name FROM sys.database_files WHERE [type]=1 SET @CanshrinkSize=CAST((@TotalLogSpace-@FreeLogSpace) AS BIGINT) SET @SQL1 = ''USE ['+@DBNAME+']'' SET @SQL1 = @SQL1+ ''DBCC SHRINKFILE (['' + @filename + ''],'' + CAST(@CanshrinkSize+1 AS NVARCHAR(MAX)) + '')'' EXEC (@SQL1)' EXEC (@SQL) FETCH NEXT FROM @itemCur INTO @DBNAME END CLOSE @itemCur DEALLOCATE @itemCur SELECT * FROM [#DataBaseServerData] DROP TABLE [#DataBaseServerData] END
幸虧報(bào)錯(cuò)信息還是很全面,根據(jù)報(bào)錯(cuò)信息找到相關(guān)的數(shù)據(jù)庫(kù),執(zhí)行一下DBCC LOGINFO
dbcc loginfo(N'cdb')
發(fā)現(xiàn)確實(shí)只有兩個(gè)VLF文件,不能再收縮了,因?yàn)槭桥磕_本,當(dāng)其中有一個(gè)庫(kù)失敗之后,后續(xù)的庫(kù)就不會(huì)再進(jìn)行收縮操作
這里只要加上數(shù)據(jù)庫(kù)的VLF數(shù)量的判斷就可以了
本文寫的不好,還請(qǐng)各位大俠提出寶貴意見,如有好的解決方案歡迎分享,大家共同學(xué)習(xí)進(jìn)步。
標(biāo)簽:通遼 南京 廣安 阿里 馬鞍山 福建 河北 陜西
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server無(wú)法收縮日志文件的原因分析及解決辦法》,本文關(guān)鍵詞 SQL,Server,無(wú)法,收縮,日志,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。