探究 *.dat 網站範本還原時內容資料庫不存在之問題

發佈日期: 2007 年 8 月 1 日

作者: 王恩琦 (TechNet 技術論壇 WSS 版版主;微軟 2007 年度 WSS MVP)
http://blog.blueshop.com.tw/angi/

本頁內容

前言
對網站集合做一對一的備份與還原,能順利完成網站集合的還原
同一個備份檔做兩個網站集合的還原,回存至第二個網站集合將回應沒有內容資料庫的錯誤
子網站集合備份檔還原至頂層網站集合 or 頂層網站集合備份檔還原至子網站集合,是沒有問題的
結論

前言

本篇是從 STSADM 備份檔為網站範本的應用 這篇文章所分出來的,目的是在說明使用 *.dat 網站範本進行網站集合還原時,內容資料庫不存在的問題,本文或許沒有正確的結論,僅是小弟做的一個測試與記錄罷了。本篇會先還原當時所遇到的情況,不過建議可以先閱讀前一篇文章,瞭解 STSADM 備份檔做為網站範本的應用;其次,本文舉出三種測試過程與結論,內文或許有點繞口將令您頭昏腦漲,若對這三個測試不感興趣的話,可以直接跳到結論,因為結論才是最重要的,呵呵~~

註:在前篇將 STSADM 備份檔所做的範本命名為 *.dat 網站範本,故本篇繼續沿用。

在以 STSADM 備份檔為網站範本的應用 討論到如何使用 STSADM 將備份下來的 *.dat 備份檔 (包含子網站) 做為 *.dat 網站範本,而此範本在做還原時,會遇到內容資料庫不存在的問題,利用下圖將現場還原一下:

Dd125482.50datarecovery1(zh-tw,TechNet.10).jpg

將 8020 的網站使用 STSADM 備份為 8020.dat 的網站範本檔案後,我們希望這個 *.dat 網站範本做為 8030 網站與 8030/sites/subsite (8030 網站的子網站集合) 網站的網站範本,所以,在 8030 的網站應用程式建立完成後,直接將 *.dat 網站範本以 STSADM 還原至 8030 網站;這時,我們也希望此網站範本能夠還原至 8030/sites/subsite,因此,同樣使用 STSADM 還原,竟然發生內容資料庫不存在的問題!如果直接在 8030 網站應用程式下再建立一個內容資料庫,8030/sites/subsite 就可以使用 *.dat 網站範本還原了!

真正的原因與 STSADM 備份還原在這方面的機制,老實說,小弟尚不清楚,或許哪天會在某的地方看到這樣的說明,也或許幾天後,就有熱心的前輩分享了這個資訊!但小弟要分享與記錄的是,在這個過程中所發現的一些規則,這規則倒是滿有趣的,也或許聰明的您在這過程中,便能瞭解 STSADM 在這方面的規則與機制,也或許小弟其實已經找到解答,卻不知如何說明!將這過程分成幾個重點做說明:

對網站集合做一對一的備份與還原,能順利完成網站集合的還原

首先,網站集合是可以獨立被備份的,不論是 http://anginb:8020 或 http://anginb:8020/sites/sub1 都可以使用 STSADM 進行備份與還原,所以,當我們進行網站備份與還原時,很自然的下 STSADM –o backup 與 –o restore 指令,這是因為網站已經擁有一個內容資料庫,而備份與還原時,*.dat 檔都需要對應到一個內容資料庫。重點來了:我們在備份時,都是很直接的下 STSADM –o backup,假設我們現在 http://anginb:8020/ 與 http://anginb:8020/sites/sub1 都確實存在,且兩個網站都使用 STSADM 分別備份為 BAK8020.dat 與 BAK8020sub1.dat ,再同時還原至 http://anginb:8030/ 與 http://anginb:8030/sites/sub1 時,我們來看下表的結果:

網站與子網站集合

備份檔

還原網站與子網站集合

能否還原

anginb:8020

BAK8020.dat

anginb:8030

 

Dd125482.check_green(zh-tw,TechNet.10).gif

sites/8020sub1

BAK8020sub1.dat

/sites/8030sub1

 

Dd125482.check_green(zh-tw,TechNet.10).gif

從上表得知,這些網站的還原是沒有問題的,且在 WSSContent8020 與 8030 資料庫的 Current Number of Site 都是 2 個網站。當然,如果再建立一個 8020sub2 並備份 BAK8020sub2.dat 再還原至 8030sub2 也是沒有問題的。但是,如果將 BAK8020sub1.dat 對 http://anginb:8030/sites/sub2 做還原,就會出現沒有內容資料庫的問題!

Dd125482.50datarecovery2(zh-tw,TechNet.10).jpg

小結:依序一對一的對網站集合與子網站集合做備份與還原,是沒有問題的;但如果使用已還原過的檔案再對第二個網站集合進行還原,則會發生沒有內容資料庫的錯誤!

同一個備份檔做兩個網站集合的還原,回存至第二個網站集合將回應沒有內容資料庫的錯誤

再來做一個測試,就是將子網站集合的備份檔 BAK8020sub1.dat 做還原網站集合與子網站集合的測試,並將這兩個還原的先後次序做對調,看有什麼結果:

網站與子網站集合

備份檔

順序

還原網站與子網站集合

還原

sites/8020sub1

BAK8020sub1.dat

1

anginb:8040

 

Dd125482.check_green(zh-tw,TechNet.10).gif

 

 

2

/sites/8040sub1

 

Dd125482.uncheck_green(zh-tw,TechNet.10).gif

 

 

1

/sites/8040sub1

 

Dd125482.check_green(zh-tw,TechNet.10).gif

 

 

2

anginb:8040

 

Dd125482.uncheck_green(zh-tw,TechNet.10).gif

小結:結果發現,對 http://anginb:8040 的網站集合來說,不管還原的順序如何,如果使用相同的備份檔,只要有一網站使用此 *.dat 檔進行網站還原後,第二個網站要再使用此檔還原時,就會回應沒有內容資料庫的訊息!此結論與第一點的測試是吻合的!

子網站集合備份檔還原至頂層網站集合 or 頂層網站集合備份檔還原至子網站集合,是沒有問題的

有點繞口,直接看下表:

網站與子網站集合

備份檔

順序

還原網站與子網站集合

還原

sites/8020sub1

BAK8020sub1.dat

1

anginb:8050

 

Dd125482.check_green(zh-tw,TechNet.10).gif

anginb:8020

anginb:8020

2

/sites/8050sub1

 

Dd125482.check_green(zh-tw,TechNet.10).gif

小結:即 *.dat 備份檔是可以任意還原的!但從上面的兩個小結可知,只能進行一次,第二次就會出現內容資料庫的問題!

STOP!測試到此為止!各位應該看得快頭昏了吧!

在上述的情形下,可能會問:為什麼會這樣呢!真正的機制有待正確的解答,但從上面的例子,可以發現:

  1. 使用 STSADM 的 *.dat 網站集合備份檔可以任意還原至頂層網站集合或子網站集合

  2. 網站集合的備份檔如已還原至一個網站集合,則此檔再還原第二個網站集合時,必發生沒有內容資料庫的訊息

結論

嗯,不知道各位看官看到結論時,是不是很慶幸的覺得,終於完了,頭昏腦漲的,呵呵!辛苦辛苦!不過,小弟第一次遇到這個問題,在還沒瞭解這個過程之前,實在不明白沒有內容資料庫的這個訊息是正常與否,即便要加上內容資料庫,也是戰戰兢兢的!不過,小弟現在覺得,微軟還真貼心,把答案都明確的說明了,反正看到出現沒有內容資料庫,就用力給他加下去就對了啦!這樣就可以還原了!

再分享一個資訊,如果同一個 Web 應用程式,想要還原多個網站,而在此 Web 應用程式下已有三個內容資料庫,接著對子網站集合進行四個子網站的還原,則還原次序與內容資料庫的網站數關係如下表:

Dd125482.50datarecovery3(zh-tw,TechNet.10).jpg

最後,如果要在一個網站集合下,使用同一個 *.dat 網站範本還原多個子網站集合,並使每個子網站集合都擁有各自的內容資料庫,那麼就建立一個內容資料庫,還原一次子網站集合,以這樣的順序,就能讓還原的子網站集合擁有獨立的內容資料庫了!

顯示: