在還原數據庫的時候,會遇到如下提示,設備 'D:\aaa.bak' 上的介質簇的結構不正確。SQL Server 無法處理此介質簇
產生的原因有3種:
一、備份bak文件和你要還原過去的程序版本不一致,可以通過select @@version查看2邊的具體版本。一般大版本一致就基本沒問題。
二、備份bak文件拷貝的過程中損壞了或者變小了,比如原來是5G,考過去變成了4.9G,那還原肯定就要報錯,解決辦法就是把bak打包考過去。(比如有時候通過堡壘機進行傳文件,或者共享傳文件容易出現)
三、備份的bak文件有多個,你考的時候少考了,考得不完整導致的。
針對版本不對導致的異常(一般是高版本的數據庫備份在低版本中還原,不兼容導致),可通過如下方式解決:
在備份的SQL Server 2012 數據庫上生成腳本語言,然后在SQL Server 2008R2上執行。
1、首先把要把sql2012中要備份的數據庫設置為兼容2008. 右鍵sql2012中的數據庫Test-屬性-選項 看到如下圖
2、右鍵Test-任務-生成腳本,下一步-下一步到達下圖,點 高級 選項。把script for sql version 改成你要降級的那個版本 也就是sql2008.確定完成即可。會生成一個script.sql
腳本文件。
4、找到你這個sql2012數據庫在電腦中的位置。 右鍵這個數據庫-文件 會有路徑,復制出這兩個文件來。 至此 sqlserver2012的電腦操作完成
5、把上面得到的script.sql 文件和兩個數據源文件復制到sql2008所在的電腦中。在sql2008中 新建-查詢管理器。把script.sql拖進去,會看到代碼。
注意綠色部分。此時顯示的數據庫文件位置是sql2012電腦的位置。我們需要把這兩個地址改為 sql2008R2 中 你復制過來的那兩個源文件的地址即可。運行F5執行 成功。