導讀:SQL Server數據遷移的知識之前已經為大家介紹了很多,比如SQL Server數據庫遷移方法,接下來就為大家詳細介紹SQL Server數據遷移至雲端應用技巧,以方便大家在以後的實際工作中做好SQL Server數據庫的遷移工作。
微軟的SQL Azure並不完全支持SQL Server 2005或SQL Server 2008的所有功能,因此,在數據轉移的時候必須十分小心。目前SQL Azure也還沒有提供任何管理工具(除了SQL Server Management Studio,當然不能完全靠它的Object Explorer來做轉移)做這類的管理作業,微軟在Codeplex網站上有一個SQL Azure Migration Wizard的工具,到是十分適合采用(這部分我們稍後會提到)。
將既有的數據庫數據轉換到SQL Azure上面,或是把SQL Azure上面的數據轉下來,這都牽扯到數據的輸入和輸出。如果我們單單針對將數據輸入和輸出的作法來看,對天天在處理數據庫的行家而言,這並不是甚麼新 鮮的事了,方法也很多,而傳統的大批數據轉換的做法也大都能適用,例如:
運用SQL Server提供BCP工具程序(請參考MSDNLibray的BCP Utility)。
用SSIS(SQL integration server service,使用Visual Studio2008)。
運用ODBC and ADO.Net 提供的API 功能。
另外,微軟的Sync Framework也是一個好選擇。這一點我們會在稍後作說明。
雲端解決方法
每次讀取一次記錄然後再寫入一次記錄,還不如一次性讀入一堆數據放置在雲端,然後再以本地的方式做大筆數量的寫入。
圖1 使用Worker role做Bulk傳送
如圖1所示,基於這個原理運用Web Role作為用戶的接口負責讀取上傳的數據,並將數據放入Blobs中,然後產生Jobs的工作項。至於Worker Role的部分則一直負責觀察Jobs的工作項目,一旦有工作項目進入到Blobs中,就會把數據讀出來,再運用BCP的工具程序一次性寫入到目標數據庫 中,完成一個Jobs的工作。
使用Blobs
我們使用Blobs是因為它被設計來儲存大量的文字及二進制數據格式。非常簡單的讀取方式,讓我們只要運用REST API就能上傳、管理、組織及維護這些數據。Blobs有三種資源,分別是Account、Containers及Blobs,它的架構觀念簡潔且存取容 易,因此很容易被拿來再運用。所謂的拿來再運用並非空穴來風,其實它在設計之初就有這個預先的計劃,提供非結構化的二進制的龐大存儲器;讓它具有不受任何 限制的基礎,可以被用來儲存任何數據或索引。Blobs有二種,Block blob能存儲最高200GB的數據,而Page Blob能支持最高1TB的數據,主要用於隨機讀寫用。例如Windows Azure XDrive就是運用Page Blob做出來的一塊類似NTFS格式硬盤的仿真裝置,相當能夠吸引哪些熟悉文件系統的人來使用它。
SQL Azure 的存取方式
SQL Azure采用DB Service的方式,與Amazon Web Services的Simple DB類似,可以只用Database的Service(不過存取的命令就不同了,Simple DB是透過Web REST或SOAP接口,而SQL Azure則是透過OLE DB/ODBC/ADO.Net,並透過T-SQL語法來做存取)。與Google App Engine的存取模式不同,Google App Engine內建的Database不能單獨存取,只能透過部署在App Engine上面的Application進行存取。
既然可以進行獨立存取,便可運用Microsoft Cloud Computing開發Web Application,那樣將會有兩種模式:
(1)Web Application部署在Windows Azure,並由SQL Azure提供Database Services。
(2)Web Application部署在自家環境,並由SQL Azure提供Database Services。
然而,不管使用哪一種模式,Web Application都是透過傳統SQL Server的1433 Port來存取SQL Azure。
因此,若是Web Application or Developer在防火牆裡面對外的聯機被管制的話,那麼使用上述第一個模式會是比較方便開發。
不管采用哪一種connecting String,簡單來說,該services就是listen 在tcp:servername.ctp.database.Windows.Net:1433這個位置。
上文中介紹到的SQL Server數據遷移至雲端應用技巧並不是萬能的,可能在有些情況下就不適用,希望大家靈活掌握,靈活運用,為以後的數據庫遷移工作帶來方便。