2012-05-25 173 views
23

最初來自SQL Server 2008的數據庫已恢復到SQL Server 2012中。從SQL Server 2012中創建了一個備份,我試圖在本地SQL Server 2008 Express上將其還原。但是,我收到一個錯誤'指定的轉換無效'(SQLManagerUI)。如何從SQL Server 2012將數據庫備份文件(.bak)還原到SQL Server 2008 Express?

我已經從2012年生成了一個SQL腳本,並將其設置爲與SQL Server 2008兼容生成。但它是一個大型的SQL文件,大約700mb。

我記得之前曾試圖在我的本地SQLExpress上運行這個大小的腳本,並且還出現了錯誤。

有沒有辦法讓SQL Server 2012中的「大型」數據庫進入SQL Server 2008 Express?

+4

你可以**從不**按照SQL Server版本的方式「返回」。如果您在2012版中備份了數據庫,則無法將該備份恢復到2008版。只是不會工作 - 沒有任何技巧或方法,無論是:-( –

+0

哦,不,謝謝Marc。我會嘗試看看我是否可以運行生成的SQL腳本來獲取數據庫的副本到我的本地SQL – stormwild

+1

請參閱[爲什麼SQL Server無法將備份還原到較早版本](http://www.mytechmantra.com/LearnSQLServer/Unable_to_Restore_Database_From_Backup.html) –

回答

21

感謝Marc和Aaron提供的答案。

快速回答是否定的,無法將備份文件從較高版本恢復到較低版本的SQL Server。

解決辦法是生成腳本來創建數據庫。

您可以將腳本生成目標設置爲較低版本。

請參閱上面的註釋以獲取更多信息。

鏈接:

Why an SQL Server Database from a higher version cannot be restored onto a lower version of SQL Server?

Create Database in SQL Server 2012, Script and Use in 2008?

3

幾件事情要補充一點,可能會有所幫助鄉親

當腳本使用腳本嚮導大型數據庫SSMS中它是真正重要的是要檢查執行並且願意手動重新安排它。老版本的SSMS有這個問題,因爲他們(可能)依靠sp_dependsbug

我發現在這種情況下非常有用的工具是ApexSQL Diff,您可以使用這些工具讀取數據庫備份並生成正確執行順序的腳本。

SQL Server database backup restore on lower version

一兩件事,沒有方法將趕上是亞倫提及使用特定的更高版本的功能的東西。

1

比使用SSMS腳本嚮導更好的選擇是使用Codeplex上提供的名爲SQL數據庫遷移向導的類似工具 - http://sqlazuremw.codeplex.com/releases/view/32334。您希望最新版本v4.x與SQL Server 2012配合使用。

該工具最初旨在用於在SQL Server和Azure之間遷移數據庫。但是,該工具與SQL Server和SQL Server之間的工作方式一樣。訣竅是將SQL Server而不是Azure設置爲高級選項中的目標。

這比SSMS腳本嚮導更好的選擇是,它使用BCP進行數據傳輸而不是TSQL,因此效率更高。

相關問題