認識 SharePoint 2007 系列【18】-【WSS 3.0】探究 *.dat 網站範本還原時內容資料庫不存在之問題

認識 SharePoint 2007 系列【18】-【WSS 3.0】探究 *.dat 網站範本還原時內容資料庫不存在之問題

前言

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

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

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


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 在這方面的規則與機制,也或許小弟其實已經找到解答,卻不知如何說明!將這過程分成幾個重點做說明:

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

首先,網站集合是可以獨立被備份的,不論是 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 時,我們來看下表的結果:


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


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

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

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


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

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

有點繞口,直接看下表:

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

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

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

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

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

結論

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

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

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