[SQL]如何找出SQL 2005已經要求磁碟空間而還沒使用的空間

  • 2426
  • 0

摘要:[SQL]如何找出SQL 2005已經要求磁碟空間而還沒使用的空間

大家應該都會發現
當資料量一堆,XXX.MDF會跟著成長
當你刪除資料,XXX.LDF也會跟著成長
當一個系統常需要匯入大量資料,又定期需要清除舊資料
這樣的硬碟使用成長量會成長的相當快
一開始的硬碟規劃沒規劃好,就會遇到磁碟空間滿的窘境。
清除的方法請參考,[SQL]dump transaction & sp_updatestats

在前幾天,小弟一時不察就讓系統硬碟爆了,
想當然爾,跳出一堆exception,
這時後想刪一些舊資料發現也不能刪,
因為磁碟滿了,log檔無法寫入了
這時有兩種做法,
一是把log檔移到有空間的磁碟再刪除、壓縮,可是小弟的VM沒其他空間了
另一種容我詳細道來。
因為突然想到dump log後都會要壓縮資料庫
來釋放先被allocate的磁碟空間
就想說是否dump log後還可以寫log??
後來一試真的可以,這樣我的問題就解決了
但是由於都看不到可用空間,所以會刪到log滿了又清再刪
這樣的做法蠻笨的,不過為了系統能跑只好先這樣做
這樣處理後,系統可以正常執行了

處理好回頭來思考,為什麼會這樣
資料一多磁碟空間會成長這我可以理解
但是為什麼清除log後,卻不會還回來?
這可能要高手才知道了,現在可以了解的是清除的空間是還可以使用的
但是要怎麼知道還有多少空間勒???
找了許久找不太到,想說MSDN論壇上有許多高手
可以去問問,在問之前就先search,沒想到就找到答案了
真是太神了,而且還是2006年的,雖然是SQL 2000但是還是可以用

如何查詢資料庫"未使用"空間

原來就是這個指令

sp_spaceused



這樣我就可以知道還有多少空間可以用了,另外壓縮資料庫要花太多時間了
或許可以利用這些數據來判斷是否要壓縮資料庫