国产探花免费观看_亚洲丰满少妇自慰呻吟_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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 隆德县| 鄱阳县| 新平| 祁东县| 安仁县| 扎囊县| 来宾市| 凤冈县| 呼图壁县| 福鼎市| 梧州市| 连山| 阜宁县| 瑞昌市| 新乐市| 台中县| 旺苍县| 兴义市| 高邮市| 醴陵市| 腾冲县| 嘉善县| 建水县| 吴旗县| 岱山县| 大渡口区| 睢宁县| 如皋市| 扎赉特旗| 萝北县| 苏州市| 河东区| 木里| 日喀则市| 海原县| 盐山县| 茶陵县| 灌阳县| 张家界市| 彰化县| 剑河县|