在對數(shù)據(jù)庫備份與還原的過程中,我遇到一個(gè)問題“介質(zhì)集有2個(gè)介質(zhì)簇,但只提供了1個(gè)。必須提供所有成員”,下面詳細(xì)的介紹一下遇到問題的經(jīng)過與問題解決的方法!
一、備份與還原遇到的問題描述與解決方法:
前兩天用戶測試我們做的評教系統(tǒng)小軟件,有點(diǎn)問題我們過去看了看,想將他們的測試數(shù)據(jù)備份一下,以便我們修改軟件測試使用。
我是這樣備份的,數(shù)據(jù)庫備份默認(rèn)有一個(gè)路徑:C\...,而我又添加了一個(gè)新路徑,沒將默認(rèn)路徑刪除,而是選中新路徑,我就理所當(dāng)然的認(rèn)為數(shù)據(jù)庫中的數(shù)據(jù)備份到我新加的路徑下了。

今天還原數(shù)據(jù)庫時(shí),我只選擇了D盤備份文件"YZTeacherEvaluate",提示這樣一個(gè)錯(cuò)誤:還原對于服務(wù)器“192.168.24.101”失敗。 其他信息:System.Data.SqlClient.SqlError: 介質(zhì)集有 2 個(gè)介質(zhì)簇,但只提供了 1 個(gè)。必須提供所有成員。 (Microsoft.SqlServer.Smo)
。詳情見圖片:
我想讓用戶重新給我備份一下發(fā)過來,結(jié)果他操作過程中,將數(shù)據(jù)庫給刪除了,然后將C盤數(shù)據(jù)庫備份文件給我發(fā)了過來,我誤以為是他重新備份的,附加一下依然提示上述錯(cuò)誤。突然想起來,將這兩個(gè)文件一起還原,應(yīng)該就沒事了。
接下來,我重新還原數(shù)據(jù)庫,將C盤和D盤備份的數(shù)據(jù)庫文件同時(shí)附加上,還原成功了,數(shù)據(jù)還在,萬幸??!

二、數(shù)據(jù)庫備份與還原需要注意的地方:
1.在做數(shù)據(jù)庫的備份時(shí),注意備份的“目標(biāo)”中,最好是只有一個(gè)路徑,如果多個(gè)路徑,在還原時(shí),則需要提供多個(gè)bak文件才能成功還原,否則還原失敗,并提示“介質(zhì)集有2個(gè)介質(zhì)簇,但只提供了1個(gè)。必須提供所有成員”;備份目標(biāo)只有一個(gè)路徑,備份成功后,該路徑生成一個(gè)bak文件,該文件是數(shù)據(jù)文件不包括該數(shù)據(jù)庫的結(jié)構(gòu)信息,如果在備份時(shí)“選項(xiàng)”中是選中“追加到現(xiàn)有的備份集”那么該文件并不是說一個(gè)文件就只存了一次備份的數(shù)據(jù),而是保存著所有的備份信息,在你想還原的時(shí)候,會(huì)列出來供你選擇哪一個(gè)版本是你想還原的;如果“選項(xiàng)”選中的是“覆蓋所有現(xiàn)有的備份集”,那么就只有一份最新的了,也就是說一旦數(shù)據(jù)發(fā)生結(jié)構(gòu)性變化時(shí),比如增加或者刪除了一個(gè)表的字段,那么很可能就還原不成功了。


2. 還有一個(gè)注意的地方,就是數(shù)據(jù)庫備份只能是備份到本機(jī)
3. 還原時(shí),有兩種方式,一種是“數(shù)據(jù)庫還原”,系統(tǒng)會(huì)在安裝目錄中找到該數(shù)據(jù)庫的那份“最新”的備份;一種是“文件”還原,也就是可以通過數(shù)據(jù)文件bak來還原;不管是通過哪種方式來還原,有可能會(huì)出現(xiàn)以下錯(cuò)誤“因?yàn)閿?shù)據(jù)庫正在使用,所以無法獲得對數(shù)據(jù)庫的獨(dú)占訪問權(quán)”,解決方法:重啟數(shù)據(jù)庫服務(wù)器;
4.以上是數(shù)據(jù)的備份還原,如果是要涉及數(shù)據(jù)庫結(jié)構(gòu)的備份,比如表結(jié)構(gòu),存儲(chǔ)過程。。。。。的備份,有兩種方法:一種就用“附加”mdf文件,這種方法當(dāng)然會(huì)附帶所有的信息,包括數(shù)據(jù),但是在拿不到mdf的情況下,比如你要復(fù)制的數(shù)據(jù)庫是別人的服務(wù)器的,而你的權(quán)限拿不到mdf的,就只能用以下這種方法,也就是另一種方法:首先對源數(shù)據(jù)庫生成腳本(任務(wù)-生成腳本)從而得到該數(shù)據(jù)庫的結(jié)構(gòu),再“導(dǎo)入數(shù)據(jù)”。
|