我們知道在SqlServer實例啟動過程中數(shù)據(jù)庫會進(jìn)行還原(Redo,Undo)然后打開提供服務(wù),但我們知道tempdb是不提供重做機(jī)制的(Redo)那tempdb是如何還原的呢?如果tempdb損壞我們該怎么辦,這里我將通過實例給大家介紹.
有時tempdb因為一些原因會變得非常巨大,一些DBA的解決方式就是重啟數(shù)據(jù)庫實例,的確重啟后tempdb就會恢復(fù)到初始設(shè)置大小,理由很簡單tempdb會重新創(chuàng)建.
Tempdb的創(chuàng)建過程.
1在model庫打開后進(jìn)行tempdb創(chuàng)建(可以日志中看到model總是在tempdb之前打開)
2從model庫中拷貝extent(s)到tempdb主文件并根據(jù)master庫中的meta data信息創(chuàng)建tempdb主數(shù)據(jù)文件(Mdf)
3 根據(jù)master中定義tempdb的主文件大小填充主文件
4 根據(jù)master中定義的主日志文件大小創(chuàng)建日志文件
5 創(chuàng)建,附加其他文件
注:如果tempdb不能創(chuàng)建,則實例shutdown
這里我們做個測試在model庫中簡單的創(chuàng)建一個表然后重啟實例
code
use modelcreate table t1(id int)
重啟實例后我們可以發(fā)現(xiàn)tempdb中也存在表t1 如圖1-1,其實就是tempdb啟動時主文件要從model中拷貝擴(kuò)展區(qū)(extent).我們甚至可以分析相應(yīng)的數(shù)據(jù)頁,可以看到相應(yīng)的數(shù)據(jù)頁tempdb與model是完全一致的.感興趣的朋友可以自行嘗試.
新聞熱點
疑難解答
圖片精選