在對數據庫備份與還原的過程當中,我遇到一個問題「介質集有2個介質簇,但只提供了1個。必須提供全部成員」,下面詳細的介紹一下遇到問題的通過與問題解決的方法!數據庫
前兩天用戶測試咱們作的評教系統小軟件,有點問題咱們過去看了看,想將他們的測試數據備份一下,以便咱們修改軟件測試使用。服務器
我是這樣備份的,數據庫備份默認有一個路徑:C\...,而我又添加了一個新路徑,沒將默認路徑刪除,而是選中新路徑,我就理所固然的認爲數據庫中的數據備份到我新加的路徑下了。測試
今天還原數據庫時,我只選擇了D盤備份文件"YZTeacherEvaluate",提示這樣一個錯誤:還原對於服務器「192.168.24.101」失敗。 其餘信息:System.Data.SqlClient.SqlError: 介質集有 2 個介質簇,但只提供了 1 個。必須提供全部成員。 (Microsoft.SqlServer.Smo) 。詳情見圖片:lua
我想讓用戶從新給我備份一下發過來,結果他操做過程當中,將數據庫給刪除了,而後將C盤數據庫備份文件給我發了過來,我誤覺得是他從新備份的,附加一下依然提示上述錯誤。忽然想起來,將這兩個文件一塊兒還原,應該就沒事了。blog
接下來,我從新還原數據庫,將C盤和D盤備份的數據庫文件同時附加上,還原成功了,數據還在,萬幸啊!圖片
1.在作數據庫的備份時,注意備份的「目標」中,最好是隻有一個路徑,若是多個路徑,在還原時,則須要提供多個bak文件才能成功還原,不然還原失敗,並提示「介質集有2個介質簇,但只提供了1個。必須提供全部成員」;備份目標只有一個路徑,備份成功後,該路徑生成一個bak文件,該文件是數據文件不包括該數據庫的結構信息,若是在備份時「選項」中是選中「追加到現有的備份集」那麼該文件並非說一個文件就只存了一次備份的數據,而是保存着全部的備份信息,在你想還原的時候,會列出來供你選擇哪個版本是你想還原的;若是「選項」選中的是「覆蓋全部現有的備份集」,那麼就只有一份最新的了,也就是說一旦數據發生結構性變化時,好比增長或者刪除了一個表的字段,那麼極可能就還原不成功了。class
2. 還有一個注意的地方,就是數據庫備份只能是備份到本機軟件
3. 還原時,有兩種方式,一種是「數據庫還原」,系統會在安裝目錄中找到該數據庫的那份「最新」的備份;一種是「文件」還原,也就是能夠經過數據文件bak來還原;不論是經過哪一種方式來還原,有可能會出現如下錯誤「由於數據庫正在使用,因此沒法得到對數據庫的獨佔訪問權」,解決方法:重啓數據庫服務器;權限
4.以上是數據的備份還原,若是是要涉及數據庫結構的備份,好比表結構,存儲過程。。。。。的備份,有兩種方法:一種就用「附加」mdf文件,這種方法固然會附帶全部的信息,包括數據,可是在拿不到mdf的狀況下,好比你要複製的數據庫是別人的服務器的,而你的權限拿不到mdf的,就只能用如下這種方法,也就是另外一種方法:首先對源數據庫生成腳本(任務-生成腳本)從而獲得該數據庫的結構,再「導入數據」。方法