從global到mooncake遷移SQL Azure

以前遇到了問題,在此備註一下:sql

 

由於兩個環境基本上能夠認爲是隔離的,因此遷移過程基本上只有經過導出、導入的方式(也是官方推薦的方式):數據庫

一、從global上進行數據庫的export操做(擴展名bacpac),導出到blob中。經過Azure管理界面完成(固然也能夠經過azure命令行,不過操做比較簡單就用界面了)服務器

二、從global的blob中將文件複製到mooncake的blob中。能夠手動下載、上傳,若是文件很大的話,也能夠經過AzCopy命令行實現服務器端的點對點複製。工具

三、在mooncake上經過bacpac進行數據庫導入。經過Azure管理界面完成spa

 

注意事項:命令行

一、導入、導出的時候,由於對數據庫資源消耗很是高(我設置了DTU報警規則,導出期間的DTU基本上停留在95%以上),因此建議先把數據庫scale up。我是把S1級別臨時提高到了S2級別(DTU從20上升到50)code

二、導出過程會很是慢,要有耐心(50DTU的狀況下,實測導出速度在7GB/小時左右,沒錯,小時……)orm

三、這種相似跨兩個產品的導入導出極可能會遇到問題(見下文)blog

 

雖然global和mooncake都標識爲v12版本的數據庫(至關於SQL Server 2014),可是內部版本極可能會不一致,資源

此次導入的時候就遇到了這個錯誤:

「Error importing database:Could not read schema model header information from package. The model version '3.5' is not supported」

緣由是global比mooncake的版本略新,致使導出導入的文件結構不兼容

解決方法就是先把global數據庫的某些設置調整成和mooncake一致的,針對model version 3.5的話執行以下T-SQL:

ALTER DATABASE [dbname] SET TEMPORAL_HISTORY_RETENTION ON

而後再從新導出……(對,從新導出………………)

 

其實這個問題和Azure無關,是SQL Server的問題,以前在model version 3.3的時候也出現過。

搜索解決方案用了有一陣時間,其實還有兩種方案也是可行的:

方案一:使用最新版的SSMS進行導入,它會考慮舊版本兼容的問題。我確實下載且安裝而且開始嘗試導入建立數據庫了,然而考慮到從本地到Azure的帶寬,我看了一眼導入速度就絕望的關掉了……

方案二:使用某些工具直接把數據庫中全部數據dump成SQL語句,而後再執行。這種方法理論上可行,不過我連試的念頭都沒有……依然是帶寬問題

 

參考連接:

http://stackoverflow.com/questions/40516564/sql-azure-v12-bacpac-import-error-could-not-read-schema-model-header-informati

http://stackoverflow.com/questions/36754023/sql-azure-v12-bacpac-import-error-the-internal-target-platform-type-sqlazurev1

相關文章
相關標籤/搜索