雲計算之路-試用Azure:一次失敗的SQL Server向SQL Azure的遷移嘗試

若是數據庫用的是SQL Server,那SQL Azure無疑是最吸引人的地方之一。在測試了虛擬機磁盤IO以後,咱們迫不急待地進行了SQL Azure的測試。html

(一)數據庫

首先進入manage.windowsazure.cn -> SQL DATABASES,建立一個數據庫(以下圖)。windows

輸入數據庫名稱,選擇BUSINESS版本,選擇數據庫空間大小,最後還要選擇一下「New SQL  database server」(明明是第1次建立數據庫,默認卻顯示Choose a server,讓用戶多了2次鼠標操做,這個地方須要改進)。服務器

而後設置數據庫用戶賬戶(SQL Server Management Studio遠程鏈接時用的就是這個賬戶),見下圖:測試

數據庫建立後成功後會顯示以下圖的信息,注意最後一列顯示的服務器名稱是隨機字母序列,很不友好、很難區分(建議讓用戶能夠指定服務器名稱)。ui

而後點擊數據庫名稱,進入DASHBOARD,點擊右側的Show connection strings,從鏈接字符串中獲得服務器鏈接地址。this

(二)設計

將SQL Server 2008數據庫壓縮備份文件上傳至Azure虛擬機,在虛擬機中安裝SQL Server 2012並恢復數據庫備份文件。server

在Management Studio中右鍵選擇要遷移至SQL Azure的數據庫,而後選擇Tasks,就會看到Deploy Database to SQL Azure(見下圖,SQL Server 2012的Management Studio纔有這個功能)。當時想強大啊、方便啊,Management Studio直接內置SQL Azure的遷移功能,遷移過程會不會如「輕舟已過萬重山」般輕鬆?htm

接着摁一下Deploy Database to SQL Azure,進入遷移界面點擊Next,進入Deployment Settings界面,點擊Connect,用以前建立的賬戶與獲得的服務器地址鏈接SQL Azure,而後選擇Edition of SQL Azure與Maximum database size,獲得以下的界面:

而後點擊Next -> Finish,就開始Exporting database...

在美好的憧憬與期待中,心想不會這麼輕鬆吧?。。。果真,沒這麼輕鬆,等來的是錯誤界面:

點開Validating schema model一看,暈掉了,一大堆錯誤。

統計了一下,一共有750個錯誤。大多數錯誤是這樣的:

Procedure: [存儲過程] has an unresolved reference to object [另外一個數據庫].[dbo].[表]

全部涉及跨數據庫訪問的存儲過程所有出錯。

既然是存儲過程引發的,那咱們把全部存儲過程幹掉,再遷移試試。

仍是出錯,但錯誤少多了,只剩下13個錯誤,錯誤出在兩個地方:1,數據庫中已有的用戶賬戶;2,視圖中的跨數據庫訪問。

因而,繼續幹掉用戶賬戶與全部視圖,繼續進行遷移,心想這下應該成功了。

結果讓人大失所望,出現了74個錯誤!

讓咱們來具體看看這74個錯誤與哪些因素有關:

1. The element Extended Property: [dbo].[表名].[字段名].[MS_Description] is not supported when used as part of a data package (bacpac).

給字段添加了Description定義。

2. Element Index: [dbo].[表名].[索引名稱] has an unsupported property FillFactor set and is not supported when used as part of a data package.

索引\主鍵\約束中定義了FillFactor。

3. Table Table: [dbo].[表名] does not have a clustered index.  Clustered indexes are required for inserting data in this version of SQL Server.

數據庫表沒有定義彙集索引。

4. Element Primary Key: [dbo].[表名] has an unsupported property DataCompressionOptions set and is not supported when used as part of a data package.

表啓用了Data Compression。

難道還要幹掉全部的索引(除了彙集索引),全部的Data Compression,全部的Description,才能夠遷入SQL Azure!

(三)

試用感言

這讓人想到了一部電影《絕代豔后》,瑪麗·安託瓦內特在嫁入法國從奧地利進入法國邊境時,除了本身的身體,什麼都不能帶入法國,包括衣服、心愛的寵物。難道從SQL Server遷移到SQL Azure也要這麼幹淨嗎?但這不是從奧地利到法國,這是從微軟的一個「坑」到微軟的另外一個「坑」。

不考慮自家產品的兼容性,真是讓人大失所望的糟糕設計。

相關文章
相關標籤/搜索