用了好幾年的一個虛機,數據庫是SQL Server 2008,配額500M。數據庫
今天突然發現沒法錄入數據,登陸後臺一看,原來是數據庫容量滿了。spa
好久沒用SQL Server了,找到一段以前用過的收縮數據庫的語句:日誌
DUMP TRANSACTION DBName WITH NO_LOG BACKUP LOG DBName WITH NO_LOG DBCC SHRINKDATABASE(DBName);
卻發現以上語句,在SQL2008的企業管理器中出現錯誤提示,原來DEMP這種用法從2008已經再也不支持了code
而後,又找到適合2008用的語句:blog
ALTER DATABASE DBName SET RECOVERY SIMPLE ALTER DATABASE DBName SET RECOVERY FULL DBCC SHRINKDATABASE(DBName)
語句卻是沒出錯,可是執行後,出現幾行提示,大概意思是沒有空間去執行DBCC。。。class
連這都執行不了,看來只能先刪除一些數據了。登錄
在刪除以前,先把數據庫改爲「簡單」恢復模式:後臺
ALTER DATABASE DBName SET RECOVERY SIMPLE
再而後,查看一下庫中全部表格的記錄數:object
SELECT a.name, b.rows FROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.id WHERE (a.type = 'u') AND (b.indid IN (0, 1)) ORDER BY b.rows DESC
發現佔用最多的幾個表,都是一些Log類型的,好比錯誤日誌、操做日誌、訪問日誌等,通通Delete數據
最後,再次執行收縮數據庫的語句:
DBCC SHRINKDATABASE(DBName);
此次很順利的成功了,收縮以後的數據庫只有30多M,能夠收工了。