附加數(shù)據(jù)庫的時候遇到錯誤:解決數(shù)據(jù)庫 \\\’xx\\\’ 的版本為 655,無法打開。此服務器支持 611 版及…
意思是服務器版本比數(shù)據(jù)庫版本低,無法附加,我的版本是2005,試了先附加到2008r2版再導入數(shù)據(jù)到2005還是遇到錯誤。
于是參考了一下方法,暫時解決了問題。(以下文字和圖片多為原創(chuàng)所有)
這個方法關鍵是如何確保保留原有表結構的主鍵、外鍵等分兩個情況,對于數(shù)據(jù)庫數(shù)據(jù)量小的,可以很方便的解決。
步驟總結:①生成(不止-帶有數(shù)據(jù)插入命令)的腳本文件.sql—-》②執(zhí)行該腳本(可用批處理命令執(zhí)行)
具體步驟如下:
第一種:小數(shù)據(jù)的情況
1.先在低版本的服務器上建立同名的數(shù)據(jù)庫。
2.在高版本的服務器上右鍵點擊目標數(shù)據(jù)庫->任務->生成腳本
3.在選擇對象->選擇特定數(shù)據(jù)庫對象
4.選擇表、視圖、存儲過程,然后下一步
5.關鍵在這,這一步里,請選擇”高級“,選項里選擇[編寫drop和create腳本]項的”編寫drop和create腳本“
選擇服務器數(shù)據(jù)庫版本
選擇 [編寫腳本和數(shù)據(jù)類型]項的“架構和數(shù)據(jù)"
6.保存腳本
7.在低版本的數(shù)據(jù)庫下執(zhí)行腳本即可。
這里介紹一下使用批處理命令執(zhí)行腳本的方法:
在cmd窗口中執(zhí)行如下命令執(zhí)行sql文件:
osql -s 127.0.0.1 -u sa -p sa -i d:test.sql
簡單說明:osql為sql server的命令,要在cmd中執(zhí)行該命令,一般安裝完sql server后該命令對應的路徑會自動添加到系統(tǒng)環(huán)境變量中。 -s 表示要連接的數(shù)據(jù)庫服務器 -u表示登錄的用戶id,-p表示登錄密碼 -i表示要執(zhí)行的腳本文件路徑。
(如果使用遠程數(shù)據(jù)庫鏈接執(zhí)行失?。?27.0.0.1表示本地數(shù)據(jù)庫服務器,本人使用遠程數(shù)據(jù)庫鏈接執(zhí)行失敗,故改將腳本文件拷貝到低版本服務器上執(zhí)行
第二種:大數(shù)據(jù)的情況
按理應該也可以通過類似包含架構和數(shù)據(jù)的方式來做,但是由于包含大數(shù)據(jù)的時候腳本文件太大,無法在分析器里執(zhí)行,所以我們得繞一下。
1~4步和a情況相同
5.這步我們選擇”高級“,選項里選擇[編寫drop和create腳本]項的”編寫drop和create腳本“,以及[為服務器版本編寫腳本]項的sql server 2008(具體看數(shù)據(jù)庫的版本),最后選[編寫腳本和數(shù)據(jù)類型]項的“架構"
6.保存腳本
7.在低版本的數(shù)據(jù)下執(zhí)行腳本,注意(alter table 表名 with check add constraint [外鍵名] foreign key(字段) references 表名(字段))這個先不要執(zhí)行。
8.現(xiàn)在可以通過導入導出任務先將表的內容導入到低版本的數(shù)據(jù)庫內
9.再執(zhí)行腳本內(alter table 表名 with check add constraint [外鍵名] foreign key(字段) references 表名(字段))這樣的語句,此處將表的外鍵附加上。da