過程: 昨天下午數據庫奔潰,表現就是連不上數據庫了,重啟服務之后好了。
查詢日文文件 , “Autogrow of file 'XX_log' in database 'XX' was cancelled by user or timed out after 1896 milliseconds. Use ALTER DATABASE to set a smaller FILEGROWTH value for this file or to explicitly set a new file size.”。
找到原因: 數據庫在自動增長,所以連接超時。
分析:數據庫日志文件滿了,開始自動增長,自動增長方式是按默認的10%。這個初期是沒有問題的,但是到了后期。日志文件巨大,有幾十G,幾十g的百分之十也有幾個G,所以再去磁盤上再分配這么大的空間,很容易超時。
解決辦法:1,把自動增長的方式設置為固定,太小了,容易造成磁盤碎片,太大容易超時。一般500M是沒有問題的。
2,定期收縮日志文件。

其他:sqlserver 數據庫的文件有mdf文件和ldf文件。mdf是數據文件,ldf是日志文件。假如有完整的日志文件,可以把數據庫恢復到任何一個時間點的狀態 。可見日志文件的重要性,但是日志文件一般增長很快,所以需要定期收縮。
USE[master] GO ALTER DATABASE 數據庫名 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE 數據庫名 SET RECOVERY SIMPLE --簡單模式 GO USE Rk GO DBCC SHRINKFILE (N'數據庫名_log' , 2, TRUNCATEONLY) --設置壓縮后的日志大小為2M,可以自行指定 GO USE[master] GO ALTER DATABASE 數據庫名 SET RECOVERY FULL WITH NO_WAIT GO ALTER DATABASE 數據庫名 SET RECOVERY FULL --還原為完全模式 GO
可以分為三步,把數據表設置為簡單模式,收縮,再設置回完整模式。
數據庫有三種模式,簡單恢復模式,完整恢復模式,大容量日志恢復模式

,可以看這里 https://www.cnblogs.com/OpenCoder/p/5708226.html
