三步10分鐘搞定數據庫版本的降遷 (將後臺數據庫SQL2008R2降爲SQL2005版本)

三步10分鐘搞定數據庫版本的降遷 (將SQL2008R2降爲SQL2005版本)


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

轉自 http://blog.csdn.net/claro/article/details/6449824


前思後想仍覺得實戰數據庫版本的降遷 一文中的方式不僅老土而且低效,故有了下文三步搞定數據庫從MSSQL2008R2 高版本降遷至SQL2005低版本。 整個過程如果思路清晰,數據量小,不過就是10分鐘的事,效率提高很多。


我們這裏仍然用上一篇的案例,即Discuz!NT 3.6.519 RC的後臺數據庫,這裏需要利用一個免費的數據庫對象同步工具,實際上整個操作過程中,這一步是最耗時低效,檢查發現用OpenDBDiffSQL-DBDiff可以高效解決這個問題。


首先,MSSQL2008R2有源數據庫dnt2_db ,需要轉到MSSQL2005目標數據庫dnt2_dbNew中。


第一步 在低版本數據庫中新建目標庫。


案例中SQL2005新建數據庫T-SQL:


  1. ----/****** Object:  Database [dnt2_dbNew]     ******/  

  2. CREATE DATABASE [dnt2_dbNew] ON  PRIMARY  

  3. ( NAME = N'dnt2_db', FILENAME = N'D:/Program Files/bbs/bbs3.6/dnt2_db .mdf' , SIZE = 15552KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )  

  4. LOG ON  

  5. ( NAME = N'dnt2_db _log', FILENAME = N'D:/Program Files/bbs/bbs3.6/dnt2_db _log.ldf' , SIZE = 530112KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)  

  6. GO  

  7. EXEC dbo.sp_dbcmptlevel @dbname=N'dnt2_dbNew', @new_cmptlevel=90

  8. GO  

  9. IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))  

  10. begin  

  11. EXEC [dnt2_dbNew].[dbo].[sp_fulltext_database] @action = 'enable'

  12. end  

  13. GO  

  14. ALTER DATABASE [dnt2_dbNew] SET ANSI_NULL_DEFAULT OFF  

  15. GO  

  16. ALTER DATABASE [dnt2_dbNew] SET ANSI_NULLS OFF  

  17. GO  

  18. ALTER DATABASE [dnt2_dbNew] SET ANSI_PADDING OFF  

  19. GO  

  20. ALTER DATABASE [dnt2_dbNew] SET ANSI_WARNINGS OFF  

  21. GO  

  22. ALTER DATABASE [dnt2_dbNew] SET ARITHABORT OFF  

  23. GO  

  24. ALTER DATABASE [dnt2_dbNew] SET AUTO_CLOSE OFF  

  25. GO  

  26. ALTER DATABASE [dnt2_dbNew] SET AUTO_CREATE_STATISTICS ON  

  27. GO  

  28. ALTER DATABASE [dnt2_dbNew] SET AUTO_SHRINK OFF  

  29. GO  

  30. ALTER DATABASE [dnt2_dbNew] SET AUTO_UPDATE_STATISTICS ON  

  31. GO  

  32. ALTER DATABASE [dnt2_dbNew] SET CURSOR_CLOSE_ON_COMMIT OFF  

  33. GO  

  34. ALTER DATABASE [dnt2_dbNew] SET CURSOR_DEFAULT  GLOBAL  

  35. GO  

  36. ALTER DATABASE [dnt2_dbNew] SET CONCAT_NULL_YIELDS_NULL OFF  

  37. GO  

  38. ALTER DATABASE [dnt2_dbNew] SET NUMERIC_ROUNDABORT OFF  

  39. GO  

  40. ALTER DATABASE [dnt2_dbNew] SET QUOTED_IDENTIFIER OFF  

  41. GO  

  42. ALTER DATABASE [dnt2_dbNew] SET RECURSIVE_TRIGGERS OFF  

  43. GO  

  44. ALTER DATABASE [dnt2_dbNew] SET  DISABLE_BROKER  

  45. GO  

  46. ALTER DATABASE [dnt2_dbNew] SET AUTO_UPDATE_STATISTICS_ASYNC OFF  

  47. GO  

  48. ALTER DATABASE [dnt2_dbNew] SET DATE_CORRELATION_OPTIMIZATION OFF  

  49. GO  

  50. ALTER DATABASE [dnt2_dbNew] SET TRUSTWORTHY OFF  

  51. GO  

  52. ALTER DATABASE [dnt2_dbNew] SET ALLOW_SNAPSHOT_ISOLATION OFF  

  53. GO  

  54. ALTER DATABASE [dnt2_dbNew] SET PARAMETERIZATION SIMPLE  

  55. GO  

  56. ALTER DATABASE [dnt2_dbNew] SET READ_COMMITTED_SNAPSHOT OFF  

  57. GO  

  58. ALTER DATABASE [dnt2_dbNew] SET  READ_WRITE  

  59. GO  

  60. ALTER DATABASE [dnt2_dbNew] SET RECOVERY FULL  

  61. GO  

  62. ALTER DATABASE [dnt2_dbNew] SET  MULTI_USER  

  63. GO  

  64. ALTER DATABASE [dnt2_dbNew] SET PAGE_VERIFY CHECKSUM  

  65. GO  

  66. ALTER DATABASE [dnt2_dbNew] SET DB_CHAINING OFF  

  67. GO  



第二步 將高版本的表數據全部導入低版本數據庫中。


案例中SQL2008R2的表數據,這裏重新說明操作步驟,如下圖所示:

圖1

連接SQL2005目標數據庫,並操作導入數據選項


圖2

選擇數據源


圖3

選擇目標服務器


圖4

複製選項設定


圖5

選擇源表。這裏全選,而不做對目標表的設定。原因在上一篇文章的{注1}部分已說明。


數據導入完畢

圖6

數據導入完畢


第三步 將高版本的數據庫對象同步到低版本數據庫中。


打開OpenDBDiffSQL-DBDiff,這裏使用OpendbDiff,如下圖


opendbdiff1

圖7 打開OpenDBDiff,並選擇源和目標庫


比較對象

圖8 比較不同數據庫的對象,並生成Alter的T-SQL語句。相比上一篇文章裏需要手動修改Create爲Alter語句,效率明顯提高。

{注:有時當數據庫中已存在部分對象時,我們需要注意Open DBDiff在給出Alter針對約束或者Create針對存儲過程語句時,會有點問題,可能會需要手動的微調}


此時,我們點擊右側的剪貼板來copy語句,不建議用另存爲的方式,否則可能會出現圖9中的因字符集問題,當然目前我還不確定是OpenDBDiff本身造成的還是我OS的問題。

將貼出的T-SQL語句在SQL2005的目標庫dnt2_dbNew中執行。


顯示亂碼

圖9 中文另存爲時發生字符集亂碼的問題


到此,三大步搞定數據庫降遷!呵呵,說我騙人,這怎麼可能就三步呢。-_-!


執行完畢後,再用OpenDBDiff檢查兩庫的對象差異,最後如圖10所示,都OK。

檢查OK

圖10 最後檢查OK




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


——>總結:優秀的DBA一定要有第三方工具,這句話不是我說的。不過OpenDBDiff只能同步對象是個缺憾!


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

lable: SQL


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