autoShrink和手動收縮資料檔案

2022-07-13 22:51:22 字數 628 閱讀 4814

1:當autoshrink開啟時,如果手動收縮資料檔案,會提示錯誤,因為此時有個後台執行緒正在收縮資料檔案,那有沒有辦法kill掉這個後台執行緒呢?

答案是沒有,只能關閉資料庫選項autoshrink,然後一直等到,直到該執行緒自己結束!詳細的說明在【這裡】

2:能不能收縮資料檔案?

看看收縮資料檔案的缺點:詳細的介紹在【這裡】,現摘錄如下:

a:收縮檔案時會把該資料檔案裡的大的頁號移到檔案的開始處,會產生大量的檔案io操作和cpu的使用率

c:收縮完畢後會產生大量的碎片,所以要進行索引的重建和重組,消除索引的碎片,結論是不要收縮資料檔案!

但是在有些情況下是要收縮資料檔案的,因為沒有其他的選擇:

a:監控的需要,導致磁碟空間報警不斷,原因是資料檔案或初始容量太大,或因業務增長導致資料檔案持續增大,而後續刪除或遷移了大表資料,能夠收縮資料檔案,

,該資料庫一直有業務在跑,不可能建新的檔案組,把現有的資料遷移過去,只能在凌晨時來收縮資料檔案,這樣對業務影響最小!

b:如果是建新的資料檔案組,遷移表資料,這樣工作量太大,還有涉及到操作的授權,增加了太多的工作量!

b:最後收縮時,新建乙個job,在23:00以後收縮,每次收縮為100m,這樣不會產生長時間的頁鎖,對於日常的操作也不會產生太大影響!

SQL SERVER手動收縮日誌檔案

sql server資料庫日誌檔案增長過快,半年時間由9g增長到150g,不知道是不是日誌原因,伺服器占用記憶體一直很高,10 g。檢視日誌,多是某帳戶登入成功的資訊,這個資訊不知道能不能取消掉。有路過的大神請指教。先分享下手動收縮日誌檔案方法,比較安全的,還有分離 清除 附加,儲存過程清除日誌的方...

清除日誌和收縮日誌

清除日誌 declare logicalfilename sysname,maxminutes int,newsize int use szwzcheck 要操作的資料庫名 select logicalfilename szwzcheck log 日誌檔名 maxminutes 10,limit o...

清除日誌和收縮日誌

清除日誌 declare logicalfilename sysname,maxminutes int,newsize int use szwzcheck 要操作的資料庫名 select logicalfilename szwzcheck log 日誌檔名 maxminutes 10,limit o...