国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL Server無法收縮日志文件的原因分析及解決辦法

2024-08-31 01:03:37
字體:
來源:轉載
供稿:網友
最近服務器執行收縮日志文件大小的job老是報錯,小編抽時間把此問題的解決方案整理了一下,特此分享到VeVb武林網平臺,供大家學習
 

最近服務器執行收縮日志文件大小的job老是報錯

SQL Server無法收縮日志文件的原因分析及解決辦法

我所用的一個批量收縮日志腳本

USE [master]GO/****** Object: StoredProcedure [dbo].[ShrinkUser_DATABASESLogFile] Script Date: 01/05/2016 09:52:39 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROC [dbo].[ShrinkUser_DATABASESLogFile]ASBEGIN DECLARE @DBNAME NVARCHAR(MAX)DECLARE @SQL NVARCHAR(MAX)--臨時表保存數據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 )--游標DECLARE @itemCur CURSORSET @itemCur = CURSOR FOR SELECT name from SYS.[databases] WHERE [name] NOT IN ('MASTER','MODEL','TEMPDB','MSDB','ReportServer','ReportServerTempDB','distribution')and state=0OPEN @itemCurFETCH NEXT FROM @itemCur INTO @DBNAMEWHILE @@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]=0SELECT @FreeLogSpace = ( SUM(( size - FILEPROPERTY(name, ''SpaceUsed'') )) )/ 128.0  FROM sys.database_files  WHERE [type] = 1SELECT @filename=name FROM sys.database_files WHERE [type]=1SET @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 @itemCurDEALLOCATE @itemCurSELECT * FROM [#DataBaseServerData]DROP TABLE [#DataBaseServerData]END 

幸虧報錯信息還是很全面,根據報錯信息找到相關的數據庫,執行一下DBCC LOGINFO

dbcc loginfo(N'cdb')

SQL Server無法收縮日志文件的原因分析及解決辦法

發現確實只有兩個VLF文件,不能再收縮了,因為是批量腳本,當其中有一個庫失敗之后,后續的庫就不會再進行收縮操作

這里只要加上數據庫的VLF數量的判斷就可以了

SQL Server無法收縮日志文件的原因分析及解決辦法

本文寫的不好,還請各位大俠提出寶貴意見,如有好的解決方案歡迎分享,大家共同學習進步。



注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳谷县| 城固县| 瓮安县| 平山县| 江源县| 称多县| 揭东县| 麟游县| 分宜县| 西峡县| 金沙县| 金湖县| 南充市| 冷水江市| 永胜县| 汨罗市| 武宁县| 旅游| 广东省| 辛集市| 甘孜县| 和龙市| 桑日县| 阿拉善左旗| 阿拉善盟| 贡嘎县| 台江县| 安平县| 栾城县| 横山县| 湛江市| 项城市| 吉水县| 三明市| 鲁山县| 元氏县| 昌吉市| 榆树市| 肃南| 肃南| 楚雄市|