將sql server 2000的備份文件導入到sql server 2012中


問題

在學習sql server 索引的時候,發現找到的很多資料都用的是一個Credit的數據,但是我不知道Credit數據庫是從哪里來的。后來在聚集索引與非聚集索引詳解這篇文章中找到了如下信息:

USE CREDIT 
  go 
  -- These samples use the Credit database. You can download and restore the 
  -- credit database from here: 
  -- http://www.sqlskills.com/resources/conferences/CreditBackup80.zip 
  -- NOTE: This is a SQL Server 2000 backup and MANY examples will work on 
  -- SQL Server 2000 in addition to SQL Server 2005. 

順利下載這個文件並解壓縮以后發現這是一個sql server 2000的備份文件,后綴名是.bak。不過我用的是sql server 2012,使用如下方法來恢復這個數據庫備份文件:打開SSMS->database->右鍵選擇restore files and filegroups,然后按如下圖所示操作:

但是執行這個操作會報錯,錯誤如下圖所示:主要是說明版本差異問題,我的bak文件是8.0版本(sql server 2000),但是要導入到11.0版本(sql server 2010)中,因此報錯。

解決方案

因為源文件版本過低,而目標數據庫版本過高,這樣的問題一個好的解決方案是首先降低目標數據的版本,然后一步一步往上提升版本。所以這里我們用使用sql server 2008作為過渡數據庫。我們將上面的CreditBackup80.bak這個數據備份文件還原到sql server 2008中,假設還原在sqlserver2008中的數據庫名稱為Credit2008,然后在 sqlserver 2008中backup這個Credit2008數據庫,默認會備份到C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Backup這個目錄下面,備份文件名成為CreditBackup100.bak,最后將此備份文件CreditBackup100.bak還原到sql server 2012中。

PS:使用SSMS將sqlserver2008的bak文件還原到sqlserver2012中出現錯誤

錯誤1:啟動sqlserver2012->右鍵database->restore files and filegroups->在source for restore中選擇from device,然后選擇CreditBackup100.bak這個文件的路徑,但是當我們指定到C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Backup這個目錄的時候,發現找不到任何文件,如下圖所示:

解決錯誤1:這是因為C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Backup這個目錄有權限設定,我們查看這個目錄的屬性可以發現這個目錄有一個特殊的用戶叫做:T-WEIXU-W7\SQLServerMSSQLUser$t-weixu-w7$SQLEXPRESS。也就是說只有這個用戶才有訪問這個目錄下的文件的權限。所以我門可以在windows下將C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Backup目錄下的CreditBackup100.bak文件拷貝到其他目錄,比如我現在拷貝的目錄是:D:\CreditBackup80。

錯誤2:在解決上述錯誤以后,我們在source for restore中選擇from device,並且選定了CreditBackup100.bak這個文件,最后點擊OK,但是會提示錯誤:

The operating system returned the error '5(Access is denied.)' while attempting 'RestoreContainer::ValidateTargetForCreation' on ....。具體如下圖所示:

從上述錯誤我們發現是因為我們想將sqlserver2008的bak文件還原到sqlserver2012的時候,卻默認的被還原到原先的sqlserver2008的目錄下,從路徑“C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\Credit2012.mdf”我們可以知道這個就是sqlserver2008實例的目錄。

解決錯誤2:造成這樣錯誤的主要原因是因為我們在機器上安裝了sqlserver2008和sqlserver2010兩個版本,但是SSMS默認情況下只是讓數據還原到sqlserver2008的目錄下,我們必須指定sqlserver2012的目錄,具體操作是:在restore file and filegroups界面中選中options,然后選定sqlserver2012實例的存放目錄,如下圖所示:

點擊箭頭所示的按鈕(注意:必須通過點擊按鈕來指定目標位置的地址,如果手動修改路徑的字符串,依然會報錯。),會彈出如下錯誤:

指定Credit2012的數據文件和日志文件的存放目錄,如下圖所示:

完成上述操作以后點擊確定,就能夠正確完成數據庫還原操作,最終將sqlserver2000的bak文件還原到了sqlserver2012中來。

解決錯誤2-方法2

在sqlserver configure manager中選中sqlserver2012的properties,然后修改log on as中的屬性,使用build-in account中的local system,具體參考:http://social.msdn.microsoft.com/Forums/en-SG/sqldatabaseengine/thread/7b259f06-e1e2-47f5-8303-77775ee80400

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM