轉自: http://www.mzwu.com/article.asp?id=2476
在SQL Server2000中要刪除日志釋放磁盤空間得分兩步進行:·執行backup log語句來刪除不活動日志,但此時磁盤空間并未釋放;·收縮數據庫釋放未使用的磁盤空間;下邊詳細說明:①.執行backup log語句刪除不活動日志執行sql語句:backup log Northwind with no_log,不活動日志將被刪除,下圖為sql語句執行前后數據庫大小:
但在資源管理器中查看,你會發現剩余的磁盤空間并沒有多出來,原因是日志刪除了,但占用的空間未被釋放,所以得再收縮下數據庫來釋放磁盤空間。說明:這個步驟也有人是執行"dump transaction Northwind with no_log",但SQL Server2000幫助文件中說dump transaction和backup log是同義的,保險起見這兩句可都執行一下。SQL Server2000幫助相關說明:引用內容
DUMP DATABASE 和 DUMP TRANSACTION 語句與 BACKUP DATABASE 和 BACKUP LOG 語句同義。在以后的版本中可能會取消對 DUMP DATABASE 和 DUMP TRANSACTION 語句的支持。
考慮刪除所有對 DUMP DATABASE 的引用,并替換為對 BACKUP DATABASE 的引用。考慮刪除所有對 DUMP TRANSACTION 的引用,并替換為對 BACKUP LOG 的引用。
②.收縮數據庫釋放未使用的磁盤空間收縮數據庫會刪除每個文件中未使用的頁,以釋放出磁盤空間。右鍵單擊數據庫,選擇"所有任務→收縮數據庫",點確定,你會看到剩余磁盤空間多了很多出來,數據庫大小也變化了:
說明:第②步操作也可以通過執行sql語句"dbcc shrinkdatabase(Northwind,1) "來進行,但實際發現執行非常慢!后測試可使用dbcc shrinkfile(n)語句,速度快很多,n的值可執行'select * from sysfiles"來獲取!總結t-sql:/*第一步:查詢出文件編號,修改@fileid值*/
select * from sysfiles
/*第二步:刪除日志并釋放空間*/
declare @table nvarchar(50),@fileid int
set @table = 'Northwind'
set @fileid = 2
dump transaction @table with no_log
backup log @table with no_log
dbcc shrinkfile(@fileid)
More Information:http://wenku.baidu.com/view/099cf2f24693daef5ef73d32.html
posted on 2012-05-09 20:42
Ke 閱讀(2468)
評論(0) 編輯 收藏 所屬分類:
sql server