標籤:blog http os 使用 strong 檔案 資料 div 問題
在對Database Backup與還原的過程中,我遇到一個問題“介質集有2個介質簇,但只提供了1個。必須提供所有成員”,下面詳細的介紹一下遇到問題的經過與問題解決的方法!
一、備份與還原遇到的問題描述與解決方案:
前兩天使用者測試我們做的評教系統小軟體,有點問題我們過去看了看,想將他們的測試資料備份一下,以便我們修改軟體測試使用。
我是這樣備份的,Database Backup預設有一個路徑:C\...,而我又添加了一個新路徑,沒將預設路徑刪除,而是選中新路徑,我就理所當然的認為資料庫中的資料備份到我新加的路徑下了。
今天還原資料庫時,我只選擇了D盤備份檔案"YZTeacherEvaluate",提示這樣一個錯誤:還原對於伺服器“192.168.24.101”失敗。 其他資訊:System.Data.SqlClient.SqlError: 介質集有 2 個介質簇,但只提供了 1 個。必須提供所有成員。 (Microsoft.SqlServer.Smo) 。詳情見圖片:
我想讓使用者重新給我備份一下發過來,結果他操作過程中,將資料庫給刪除了,然後將C盤Database Backup檔案給我發了過來,我誤以為是他重新備份的,附加一下依然提示上述錯誤。突然想起來,將這兩個檔案一起還原,應該就沒事了。
接下來,我重新還原資料庫,將C盤和D盤備份的資料庫檔案同時附加上,還原成功了,資料還在,萬幸啊!
二、Database Backup與還原需要注意的地方:
1.在做資料庫的備份時,注意備份的“目標”中,最好是只有一個路徑,如果多個路徑,在還原時,則需要提供多個bak檔案才能成功還原,否則還原失敗,並提示“介質集有2個介質簇,但只提供了1個。必須提供所有成員”;備份目標只有一個路徑,備份成功後,該路徑產生一個bak檔案,該檔案是資料檔案不包括該資料庫的結構資訊,如果在備份時“選項”中是選中“追加到現有的備份組”那麼該檔案並不是說一個檔案就只存了一次備份的資料,而是儲存著所有的備份資訊,在你想還原的時候,會列出來供你選擇哪一個版本是你想還原的;如果“選項”選中的是“覆蓋所有現有的備份組”,那麼就只有一份最新的了,也就是說一旦資料發生結構性變化時,比如增加或者刪除了一個表的欄位,那麼很可能就還原不成功了。
2. 還有一個注意的地方,就是Database Backup只能是備份到本機
3. 還原時,有兩種方式,一種是“資料庫還原”,系統會在安裝目錄中找到該資料庫的那份“最新”的備份;一種是“檔案”還原,也就是可以通過資料檔案bak來還原;不管是通過哪種方式來還原,有可能會出現以下錯誤“因為資料庫正在使用,所以無法獲得對資料庫的獨佔訪問權”,解決方案:重啟資料庫伺服器;
4.以上是資料的備份還原,如果是要涉及資料庫結構的備份,比如表結構,預存程序。。。。。的備份,有兩種方法:一種就用“附加”mdf檔案,這種方法當然會附帶所有的資訊,包括資料,但是在拿不到mdf的情況下,比如你要複製的資料庫是別人的伺服器的,而你的許可權拿不到mdf的,就只能用以下這種方法,也就是另一種方法:首先對來源資料庫產生指令碼(任務-產生指令碼)從而得到該資料庫的結構,再“匯入資料”。
SqlServer項目經驗:介質集有2個介質簇,但只提供了1個。必須提供所有成員