資料庫低版本附加高版本的問題,資料庫版本附加

來源:互聯網
上載者:User

資料庫低版本附加高版本的問題,資料庫版本附加

我的機房收費系統是在自己筆記本上敲的,敲完了以後把本上資料庫拷了出來,放到台式機上,準備通過台式機來驗收系統。當我附加資料庫的時候,提示 “資料庫'charge_sys'的版本為661,無法開啟。此伺服器支援655版及更低版本。不支援降級路徑。”

這是因為我本上的SQL是2008R2版的,而機房的電腦上的資料庫是2008版的(當然,2008版以下的也會出現這種情況)。暫時我知道的解決方案只有 兩種:

一、就是把低版本電腦的SQL升級,升到高版本就可以了。但這樣不僅浪費時間,而且很麻煩。

二、在高版本電腦上把要用的資料庫產生較低的指令碼。然後在低版本的資料庫裡面建立新的同名資料庫,執行在高版本電腦產生的指令碼。步驟如下:

1、右擊要產生指令碼的資料庫,選擇任務--產生指令碼


2、進入產生指令碼面--下一步


3、 選擇特定資料庫物件--表--全選--下一步

 

4、選擇進階(注意檔案名稱那裡是產生指令碼的路徑)

·

5、在進階頁面“為伺服器版本編寫指令碼”中選擇要編寫指令碼的版本--確定--下一步

6、選擇下一步


7、等待系統儲存和發布指令碼完成--完成

8、在較低版本的電腦上建立同名的資料庫,然後雙擊開啟產生的指令檔,執行。

開啟剛剛建立的資料庫,看看資料庫中是不是有了表了。只是表中的內容沒有了,需要重新添加。好了,準備驗收。


低版本資料庫怎附加高版本的資料庫?

1.開啟SQL SERVER 2008 的manger studio
-- 開啟"物件總管", 串連到執行個體
-- 右鍵要轉到2005的庫
-- 任務
-- 產生指令碼
-- 在"指令碼嚮導"的"選擇資料庫"中, 確定選擇的是要轉到2005的庫
-- 勾選"為所選資料庫中的所有對象編寫指令碼"5
-- 在接下來的"選擇指令碼選項"中, 將”編寫建立資料庫的指令碼”設為True,找到"為伺服器版本編寫指令碼"項, 選擇"SQL Server 2005"
-- 其他選項根據需要設定
-- 最後把指令碼儲存到一個 .sql 指令檔

2. 在2005中建立目標資料庫
在查詢分析器(或2008的manger studio在開啟指令檔), 串連到SQL Server 2005,執行上面產生的指令碼.以建立一個新的資料庫

3. 將資料從2008導到2005
開啟SQL Server 2005的企業管理器
-- 右鍵要匯入資料的資料庫
-- 任務
-- 匯入資料
-- 在"SQL Server 匯入和匯出嚮導"的"選擇資料來源"步驟中, 確定選擇的是要匯出的資料庫
-- 在"選擇資料來源"步驟中, 串連到 2005, 並選擇來源資料庫
-- 在"選擇源表和源視圖"中, 選擇所有的表
-- 最後完成
從SQL2008資料庫匯出資料到另外一個資料庫,如果資料庫中有自增主鍵,那麼在匯出的時候會報一個錯誤

解決:在資料庫匯入"選擇源表和源視圖"->點擊對應表後的“編輯映射”按鈕->勾選“啟用識別欄位插入”->匯入即可。
 
為何sql server 高版本的資料庫不可以附加低版本 mdf檔案?

是這樣的,662是SQL Server 2008 SP2以後的資料庫版本號碼,SP2之前的SQL Server 2008
的資料庫版本好是655,而661是SQL Server 2008 R2的資料庫版本號碼,本身SQL Server 2008 R2的版本要比SQL Server 2008 要高,按常理661版的資料庫檔案是不能附加到支援655版本號碼的SQL Server 2008裡的。至於出現這個蛋疼的提示是因為微軟在SQL Server 2008 SP2裡加入了15k分區數的功能,而發布SP2之前就已經發布了SQL Server 2008 R2了,由於SQL Server 2008 R2 RTM並不支援15k分區的功能,如果按常規SQL Server 2008還保持655的版本號碼的話就可能會出現附加15k分區的資料檔案到SQL Server
2008 R2 RTM中,這肯定是不能附加的,所以微軟為瞭解決這個難題,就打破常規,SQL Server 2008 SP2裡將資料庫的版本號碼改為662,這樣,由SQL Server 2008 R2 RTM的資料庫版本號碼比SQL Server 2008 SP2的低,所以自然就不能附加了,避免了麻煩,不過為了一15k分區的功能改變了版本號碼帶來的副作用就像樓主這種情況了。
這時問題的根本緣由。
其實說白了,你是拿SQL Server 2008 R2的資料庫附加到SQL Server 2008中,這肯定是不行的。要麼將你現在的資料庫執行個體升級到 SQL Server 2008 R2並安裝最新的SP補丁之後再附加。要麼將chat資料庫附加到SQL Server 2008 R2版的資料庫執行個體裡,產生SQL Server 2008版的指令檔,使用指令檔部署到SQL Server 2008 SP2裡。

至於前邊有朋友說用備份的方式,如果理解了我前邊說的就知道肯定也是行不通的。
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.