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