2010-10-25

SQL Server 2008 R2 版本的資料庫,無法在 SQL Server 2008 版本上使用;Error 948 The database 'xxx' cannot be opened because it is version 661. This server supports version 655 and earlier. A downgrade path is not supported.

幾個朋友詢問:在附加資料庫或是還原資料庫時,遇到以下的錯誤訊息:

訊息 1813,層級 16,狀態 2,行 1
無法開啟新資料庫 'R2V105016'。CREATE DATABASE 已經中止。
訊息 1813,層級 16,狀態 2,行 1
無法開啟新資料庫 'R2V105016'。CREATE DATABASE 已經中止。
訊息 948,層級 20,狀態 1,行 1
無法開啟資料庫 'R2V105016',因為版本為 661。這個伺服器支援 655 及更早的版本。不支援降級路徑。
--
訊息 1813,層級 16,狀態 2,行 1
Could not open new database 'R2V105016'. CREATE DATABASE is aborted.
訊息 1813,層級 16,狀態 2,行 1
Could not open new database 'R2V105016'. CREATE DATABASE is aborted.
訊息 948,層級 20,狀態 1,行 1
The database 'R2V105016' cannot be opened because it is version 661. This server supports version 655 and earlier. A downgrade path is not supported.
請參考以下的圖示:




經過詢問,這幾位朋友的使用情境是:
要將 SQL Server 2008 R2 版本的資料庫,佈署、附加到 SQL Server 2008 版本的環境上。

例如:程式設計師的開發環境,安裝的是 SQL Server 2008 R2 express 版本,但是客戶端伺服器機器是:SQL Server 2008 版本。

基本上,在新版本 SQL Server 上的資料庫,是沒辦法直接使用附加、還原的方式,將資料庫搬移到舊版本的 SQL Server 上。

也提醒各位:
SQL Server 2008 R2 與 SQL Server 2008 是不同的版本;SQL Server 2008 R2 是目前最新的版本。

SQL Server 2008 R2 版本的資料庫,是無法在 SQL Server 2008 版本上使用。


以下提供查詢 SQL Server 以及資料庫的版本資訊之方式:

/*  DATABASEPROPERTYEX (Transact-SQL)  
傳回指定資料庫選項的目前設定,或指定資料庫的屬性。

語法範例:
DATABASEPROPERTYEX('資料庫名稱','Version')

屬性:Version
建立資料庫所用 SQL Server 程式碼的內部版本號碼。僅供參考之用。不支援。我們無法保證未來的相容性。

-- 請勿再使用 DATABASEPROPERTY 語法
DATABASEPROPERTY (Transact-SQL) 
傳回指定資料庫和屬性名稱的具名資料庫屬性值。

重要事項: 
下一版的 Microsoft SQL Server 將不再提供此功能。
請勿在新的開發工作中使用此功能,並且儘速修改使用此功能的應用程式。 
請改用 DATABASEPROPERTYEX。 
*/
-- 查詢 SQL Server 執行個體的版本,資料庫的內部版本等資訊
USE master
GO
SELECT SERVERPROPERTY('ProductVersion') N'執行個體的版本', 
 SERVERPROPERTY('ProductLevel') N'執行個體的版本層級',
 DATABASEPROPERTYEX('master','Version') N'資料庫的內部版本號碼';
請參考以下的圖示:

以下為 SQL Server 2008 R2 版本的資訊:

以下為 SQL Server 2008 版本的資訊:



若是將 SQL Server 2008 版本的資料庫,附加到 SQL Server 2008 R2 版本上。
也就是說:
將舊版的資料庫,附加到新版本的 SQL Server 上,將會看到以下類似的訊息:

將資料庫 'DB2' 從版本 655 轉換為目前版本 661。
資料庫 'DB2' 正在執行從版本 655 升級到版本 660 的步驟。
資料庫 'DB2' 正在執行從版本 660 升級到版本 661 的步驟。
--
Converting database 'DB1' from version 655 to the current version 661.
Database 'DB1' running the upgrade step from version 655 to version 660.
Database 'DB1' running the upgrade step from version 660 to version 661.

請參考以下的圖示:




可能的處理方式:

SQL Server 2008 R2 版本,使用「指令碼產生精靈」,將資料表的資料,產生成 Insert 陳述式。
http://sharedderrick.blogspot.com/2010/12/sql-server-2008-r2-insert.html

將資料表的資料,產生成 Insert 陳述式:使用 SQL Server Management Studio 2008 指令碼精靈
http://sharedderrick.blogspot.com/2009/03/insert-sql-server-management-studio.html

使用「資料庫發行精靈」:Visual Studio 2008、SQL Server 2008、SQL Database Publishing Wizard
http://sharedderrick.blogspot.com/2009/02/visual-studio-2008sql-server-2008sql_27.html


參考資料:
DATABASEPROPERTYEX (Transact-SQL)
http://technet.microsoft.com/zh-tw/library/ms186823.aspx

DATABASEPROPERTY (Transact-SQL)
http://technet.microsoft.com/zh-tw/library/ms176049.aspx

1 則留言:

  1. 您好:
    除了2008R2還原成2008會遇到問題外,我在2008還原成2000也無法執行(出現錯誤3205,...只能指定64個裝置的錯誤訊息),從網路上爬文都說無法直接還原,我試了move也無法成功,還有其它方式嗎?謝謝

    回覆刪除