1. 程式人生 > >System.Data.SqlClient.SqlError: 備份集中的資料庫備份與現有的 'XXX' 資料庫不同

System.Data.SqlClient.SqlError: 備份集中的資料庫備份與現有的 'XXX' 資料庫不同

     現在手中有Sql Server 2000中的資料庫備份檔案(如果此備份檔案沒有後綴名*.bak或*.trn,請追加相應的字尾名),欲將此檔案還原到Sql Server 2005中,還原時突然報錯,為此在網上搜索了有關文章,金慶的專欄 中有一篇《SQL2005備份還原問題 》講解到了,但個人感覺不是很詳細,現將分析和解決方法詳細講解。
【簡單回顧】
      如果我們有Sql Server 2000的資料庫備份檔案,要還原到另外一個Sql Server 2000資料庫中,我們的操作是什麼樣的呢?
1、在目標資料庫伺服器中,開啟Sql Server 2000的企業管理器,並新建與原庫同名的資料庫;
2、右鍵選擇新建的資料庫,找到並選擇還原資料庫,再隨後的視窗中選擇從裝置;
3、新增Sql Server 2000的資料庫備份檔案並勾選覆蓋原有資料庫,點選確定,還原成功!
以上敘述為簡單的回顧在Sql Server 2000中還原資料庫的過程,雖然敘述的步驟不詳細,但這大體的步驟已經可以說明一些問題了!請接著往下看……

【還原Sql Server 2005】
      回顧完Sql Server 2000中的資料庫還原步驟,那麼要將Sql Server 2000的資料庫備份還原到Sql Server 2005上是不是也是如此呢?於是我如此這般的做了:
1、在目標資料庫伺服器中,開啟SQL Server Management Studio

,登入成功後,新建與原庫同名的資料庫;
2、右鍵選擇新建的資料庫,選擇“任務”下的“還原”,再隨後的視窗中選擇“源裝置”;
3、新增Sql Server 2000的資料庫備份檔案(此處的備份檔案必須已經新增好字尾名),在列表中勾選此檔案點選“確定”。
4、提示錯誤資訊如下:
標題: Microsoft SQL Server Management Studio
------------------------------

還原 對於 伺服器“***”失敗。 (Microsoft.SqlServer.Smo)

有關幫助資訊,請單擊: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=還原+Server&LinkId=20476

------------------------------
其他資訊:

System.Data.SqlClient.SqlError: 備份集中的資料庫備份與現有的 '***' 資料庫不同。 (Microsoft.SqlServer.Smo)

有關幫助資訊,請單擊: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&LinkId=20476

------------------------------
按鈕:

確定
------------------------------
附圖如下:


詳細錯誤資訊附圖如下:

【解決步驟】
      看了金慶的專欄 的《SQL2005備份還原問題 》後知道,若要用Sql Server 2000成功還原到Sql Server 2005中並不能按照在Sql Server 2000中的還原步驟來還原,即不能新建與原庫同名的資料庫,正確的還原方法如下敘述:
1、刪除上述操作中新建的資料庫或還原時要起的資料庫名稱相同的資料庫名稱,結合上圖如刪除已存在的'CN17006_db'資料庫;
2、右擊“資料庫”選擇“還原資料庫”;

3、在出現的視窗中輸入目標資料庫,如輸入CN17006_db,並選擇“源裝置”,點選瀏覽按鈕;

4、單擊“新增”按鈕,選擇Sql Server 2000的備份檔案,點選“確定”按鈕到初始視窗,勾選檔案前“還原”列的複選框;

5、點選“確定”按鈕,資料庫還原成功。

【關鍵所在】
      由上述內容不難看出來,使用Sql Server 2000的資料庫備份檔案還原Sql Server 2000的資料庫和還原Sql Server 2005的資料庫時,其關鍵所在就是在Sql 2000時是必須新建資料庫並對其還原,而在Sql 2005時是必須不能新建資料庫才能對其還原。另外一個區別就是Sql 2000時是要新建的資料庫名稱與原庫名稱相同,而Sql 2005時輸入的資料庫名稱可以是任意的一個名稱,不必與原庫名稱相同。