虛機的SQL Server空間佔滿以後進行釋放的一些操做

用了好幾年的一個虛機,數據庫是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,能夠收工了。

相關文章
相關標籤/搜索