實戰數據庫版本的降遷(Discuz!NT 3.6.519 RC 後臺數據庫SQL2008降爲SQL2005版本)

實戰數據庫版本的降遷(Discuz!NT 3.6.519 RC 後臺數據庫SQL2008降爲SQL2005版本)

 

轉載原文,並註明出處!雖無多少技術含量,畢竟是作者心血原創,希望理解。

 

下面我們將康盛論壇Discuz!的MSSQL版本爲例,首先該後臺數據庫的版本爲MSSQL2008 R2,我們需要將其部署到MSSQL2005的生產服務器上。

 

操作的步驟和方式還是如之前所說:

1、從MSSQL2008R2中生成MSSQL2005的數據庫腳本。

2、從MSSQL2008R2中將數據導入低版本的數據庫中。

3、檢查低版本的數據庫在應用過程中是否正常。

 

操作的注意事項,在下面細細說明:

 

1、從MSSQL2008R2中生成MSSQL2005的數據庫腳本。

步驟:1)打開SSMS,或者在運行對話框中輸入SSMS,打開MSSQL2008R2的管理界面。

2)按F8,或者依次打開[查看]-[對象資源管理器]。

3)在對象資源管理器中,連接數據庫引擎,並選中相應的數據庫。

4)右鍵選中的數據庫,依次選中[任務]-[生成腳本]。

如圖1所示

5)打開[生成和發佈腳本]對話框,依次下一步,在[選擇對象]對話框中,這裏選擇[選擇特定數據庫對象]。在{注1}將說明這裏爲何不選擇[編寫整個數據庫及所有數據庫對象的腳本]。

6)下一步,選擇對象時,我們只選擇[表],接着下一步,如圖2所示。在{注2}將說明這裏爲何不選擇[表]、[存儲過程]和[用戶自定義函數]一次導出。

圖2

7)在[設置腳本編寫選項]對話框中,我們點擊[高級],如下圖3所示

圖3

8)在[高級]對話框中,將[爲服務器版本編寫腳本]選項選擇爲SQL 2005,如下圖4所示。如果降級的版本是SQL2K,這裏做相應的改變即可。

圖4

9)下一步,直至腳本導出完成。重複第4至8步,依次導出[存儲過程]和[用戶自定義函數]腳本。此時我們手上有3個腳本文件,分別爲dnt2_dbCreateTABLE2005.sql是導出SQL2005版本的建表腳本,dnt2_dbCreatePROCEDURE2005.sql是存儲過程腳本,以及dnt2_dbCreateUDF2005.sql是用戶自定義函數腳本。這裏的文件名自己隨意給。

到這裏,降遷版本的數據庫對象腳本已經全部導出。在這個案例中需要注意的分別是第6步和第8步。

 

2、從MSSQL2008R2中將數據導入低版本的數據庫中。

A方案:在生成服務器SQL2005中,建立數據庫,再執行上述3個腳本。然後怎樣?當然是將數據導入了。操作數據導入導出功能,手動設定導入的對象參數。這個是大多數人的操作方式,如果是這樣,在生成腳本的時候可以在第5步選擇[編寫整個數據庫及所有數據庫對象的腳本],然後稍作修改{注:這裏的修改是指Create database的路徑等內容}再執行,另外採用這個方法,則需要對原有數據庫的表對象非常熟悉,比如哪些列是自增列,哪些是隻讀列等等,在手動導入過程中可以忽略這些列,如下圖5所示。

圖5

那我們這個案例中,我對庫結構不瞭解,所以採用B方案

B方案:在生成服務器SQL2005中,建立數據庫,再操作數據導入導出功能。我們如果不瞭解什麼是實例,更不瞭解在同一個服務器上如何查詢不同實例,請移步這裏【查詢不同實例名】

1)選擇源實例的源數據庫比如這裏的SQL2008R2上的dnt2_db,右鍵依次打開[任務]-[導出數據];或者選擇目標實例的目標數據庫比如SQL2005上的新建數據庫。

2)依次下一步,我們分別連接了複製源和目標庫後,在[指定表複製或查詢]對話框中,我們這裏選擇[複製一個或多個表或試圖的數據]。

3)勾選[源],選擇所有表。注意哦,到這裏爲止,我們只是在SQL2005新建了數據庫,並沒有執行那3個腳本。如下圖6所示。

圖6

4)選擇所有表後,自動生成相應的目標表名,根據需要設置[編輯映射],我們這裏會自動創建表所以不需要做設置。爲何這裏要自動創建目標表,在{注1}和{注2}中說明。

5)下一步直至完成,至此將源庫中的表數據全部導入目標庫中。接着我們打開dnt2_dbCreateTABLE2005.sql腳本並做相應的修改。

6)在建表腳本中,修改Create table爲Alter table 並微調語法。修改後的腳本請移步這裏下載

7)分別執行修改後的dnt2_dbCreateTABLE2005.sql,另外兩個腳本直接執行。

8)至此,表數據和庫結構都以導入完畢,索引等都已建立。再啓用IIS並鏈接後臺數據庫,打開網頁檢查應用。

 

 

{注1}:Discuz!NT 3.6.519 RC 是基於MSSQL後臺數據庫上最新的測試版,其表結構和邏輯關係都不太瞭解。在很短的時間內要做數據庫版本的降遷,如同上文的方案都是很多方式中的一種,不一定最好,但在當下是比較合適的。

dnt2_db的表中有很多隻讀的自增列,導致先建表再導入數據的方式會佔用太多時間,所以這裏我們先導入沒有任何表約束、主鍵 的數據,只有數據而已,然後再通過修改建表腳本去添加約束和主鍵、索引等。

{注2}:這裏選擇分別導出[表]、[存儲過程]和[用戶自定義函數]腳本是爲了將不同的數據庫對象的建表語句規整到一個T-SQL中,便於修改。

 

轉載原文,並註明出處!雖無多少技術含量,畢竟是作者心血原創,希望理解。

 

 

——>總結:沒有最好的,只有最合適的。

 

Posted by: select left('claro',2) @13:56:33

lable: SQL

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章