2013-03-01 244 views
5

我需要將文件DATABASE.MDF從SQL Server 2008轉換爲SQL Server 2012?如何將SQL Server 2008 .mdf文件轉換爲SQL Server 2012?

Database 'Sales' cannot be upgraded because its non-release version (539) is not supported by this version of SQL Server. You cannot open a database that is incompatible with this version of sqlservr.exe. You must re-create the database.
Could not open new database 'Sales'. CREATE DATABASE is aborted. (Microsoft SQL Server, Error: 950)

+2

你不需要轉換它。直接在SQL Server 2012上恢復它。 – 2013-03-01 17:56:11

+0

感謝您的時間,但我有下一個錯誤:數據庫'銷售'無法升級,因爲它的非發行版本(539)不受此版本的SQL Server支持。您無法打開與此版本的sqlservr.exe不兼容的數據庫。您必須重新創建數據庫。 無法打開新的數據庫'銷售'。 CREATE DATABASE被中止。 (Microsoft SQL Server,錯誤:950)..................老實說,我發現了幾個解決方案,但沒有成功 – Andreu 2013-03-01 18:16:30

+2

請查看我的答案更新。你知道SQL Server 2000和SQL Server 2008之間有很大的區別。沒有準確地描述你的問題是一個很好的方法來得到一堆無用的建議,並浪費了人們在這個過程中的時間。 – 2013-03-01 18:42:05

回答

15

只要附上它,它就會升級。如果你沒有LDF文件(?爲什麼你不具備LDF文件),您可能需要使用:

CREATE DATABASE [DatabaseName] ON 
    (FILENAME = N'Drive:\path\file.mdf') 
    FOR ATTACH_REBUILD_LOG; 

有一些注意事項,當然...

  • 因爲只有.mdf文件,所以你可能會在一個粗魯的覺醒中。如果文件與SQL Server不完全分離,則可能無法重新附加,並且您將不得不返回到源服務器以獲取正確的備份(不是.mdf文件)。這一切都取決於你試圖升級的.mdf文件的位置。如果您的.mdf文件未正常脫落,你可能會得到這樣的錯誤:

File activation failure. The physical file name "..._log.LDF" may be incorrect.
The log cannot be rebuilt because the database was not cleanly shut down.
Msg 1813, Level 16, State 2, Line 1
Could not open new database 'DatabaseName'. CREATE DATABASE is aborted.

  • 如果你的數據庫是80兼容模式,將升級爲90。這可能意味着一些工作的代碼可能突然中斷,如*=/=*加入語法。
  • 如果你的數據庫大於10GB並且你嘗試連接到Express(也可能是LocalDB,從來沒有嘗試過),那麼連接將會失敗(或者連接成功,但是在第一次自動增長時會失敗?還沒有測試過) 。
  • 如果您的數據庫是在2008 Enterprise/Developer上創建的,並且您僅使用了可用的功能,並且您將該數據庫附加到Standard或Express版本,那麼您也會遇到問題...
  • 可以從錯誤消息根本沒有試圖附加一個2008數據庫,而是試圖附加一個2000數據庫。您不能直接將其添加到SQL Server 2012.您將首先需要將其附加到SQL Server 2005,2008或2008 R2的任何實例以將其升級到該版本,然後將其備份並將其還原到SQL Server 2012.

FWIW,移動從一個實例到另一個數據庫的很多很多,更安全的方法是使用BACKUP/RESTORE(原因是,如果你的備份失敗,你仍然有數據庫的副本 - 如果你分離數據庫,出現問題,你有零份)。雖然上述一些問題可能仍然適用於這種更安全的方法。

+0

感謝您的信息....現在..無法打開新的數據庫'銷售'。 CREATE DATABASE被中止。 Msg 950,Level 20,State 1,Line 1 數據庫的「銷售」無法升級,因爲此版本的SQL Server不支持其非發行版本(539)。您無法打開與此版本的sqlservr.exe不兼容的數據庫。您必須重新創建數據庫。 如何解決問題? – Andreu 2013-03-01 19:08:45

+3

您是否閱讀我的更新*,最後一個以「OK」開頭的項目符號?您***無法將此數據庫附加到SQL Server 2012 ***。您需要將它附加到2005,2008或2008 R2 * *,然後將其備份並恢復到2012年。停止嘗試。其他方法都不會起作用 - SQL Server有意阻止了這種方法。 – 2013-03-01 19:10:53

+0

謝謝,我解決了這個問題,只是爲了點OK。我道歉我已經嘗試過這麼多的選擇,並且沒有多少時間和很大的壓力,但是如果沒有你的幫助,我不會做到這一點解決方案:備份/恢復 – Andreu 2013-03-01 19:31:24

2

OP似乎誤解了他的DB類型。 SQL Server的版本539是不是2008年,但SQL Server 2000中看到這個線程: SQL Server file version number: where can I find a reference?

我碰到的這個相同的錯誤消息試圖附加/還原SQL Server 2000的分貝SQL Server 2012中的一個實例。也許有一種解決方法,但是我所做的是首先轉換爲SQL Server 2008 R2,然後轉換爲SQL Server 2012.這樣做沒有問題。

+0

你將它轉換爲2012版本。有沒有工具? – yogihosting 2017-03-01 14:06:00

+0

實際上,如果我從.bak恢復或者只是簡單地附加和分離數據庫,我不記得。 我在我的機器上同時安裝了2008R2和2012實例,因此我只是將其附加/恢復到2008實例,然後分離/備份並附加/恢復到2012實例。 – qianlong 2017-03-08 02:51:19

相關問題