SQL Server 2000數據庫移植到SQL Server 2008R2數據庫服務器中碰到的”3145錯誤”及解決辦法
辛苦忙碌了一個星期終於安裝配置好了TFS服務器,給每個團隊成員分配了賬戶和郵箱。不過,老機器中的部分數據需要備份到新機器中,其中在移植一個使用DVBBS架設的論壇的時候,出了點問題,記錄如下,以備查找,也希望能幫助到其他人。
由於論壇已經運行了一段時間,包括公司注冊用戶、相關討論共享等重要資料,需要將其移植到新安裝TFS服務器的機器上,並對外公開訪問權限。舊的機器上安裝的是SQL Server 2000,在將論壇數據庫備份之後,在SQL Server 2008R2的數據庫上還原的過程中,出現了如下的3145錯誤:
備份集中的數據庫備份與現有的 'xxx' 數據庫不同。
一直以為SQL Server數據庫是向前後兼容的,怎麼可能存在這樣的問題呢?不過檢查一番之後,確定兩台數據庫服務器都沒有問題,且論壇的備份在原數據庫服務器上可以正常還原。沒辦法,改之,把在SQL Server 2008R2上新建的數據庫更改為 SQL Server 2000格式的,再嘗試還原,仍然是同樣的錯誤。在網上找了下,說到的辦法,嘗試了不少,其中有一篇是“備份集中的數據庫備份與現有的數據庫不同 SQL 2005 ERROR:3145 解決辦法 ”,提供了如下命令方法:
1.新建一個與現有數據庫重名的數據庫
2.在查詢窗口運行如下語句:
use master
restore database AdventureWorks from disk = 'E:databasebackupAdventureWorks.bak'
with replace, MOVE N'AdventureWorks_Data' TO N'C:Program FilesMicrosoft SQL ServerMSSQL.5MSSQLDataAdventureWorks.mdf', MOVE N'AdventureWorks_Log' TO N'C:Program FilesMicrosoft SQL ServerMSSQL.5MSSQLDataAdventureWorks_log.ldf'
從語句上來看,和在圖形界面的操作是一樣的,但是結果卻是語句運行成功,圖形界面怎麼過不去。
在其他網頁上也看到了類似的方法,也有不少成功解決這個錯誤的,不過,在SQL Server 2008R2服務器上,還是無法正確備份,也沒有找到有其它人在SQL Server 2008R2上,用其它方法解決還原備份的問題。
不過,將論壇數據庫從舊的SQL Server 2000上分離出來,再附加上SQL Server 2008R2上,成功,數據完整的恢復了!
不清楚為什麼在SQL Server 2005上可以,在SQL Server 2008R2卻不能恢復備份。不過,好在使用分離和附加的方法,成功將論壇遷移。在此記下,做為參考吧。