天天看點

将sql server 2000的備份檔案導入到sql server 2012中

<a></a>

順利下載下傳這個檔案并解壓縮以後發現這是一個sql server 2000的備份檔案,字尾名是.bak。不過我用的是sql server 2012,使用如下方法來恢複這個資料庫備份檔案:打開SSMS-&gt;database-&gt;右鍵選擇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中。

錯誤1:啟動sqlserver2012-&gt;右鍵database-&gt;restore files and filegroups-&gt;在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:

 本文轉自xwdreamer部落格園部落格,原文連結:http://www.cnblogs.com/xwdreamer/archive/2012/07/02/2573076.html,如需轉載請自行聯系原作者