Pages

地端 SQL 同步至雲端 SQL Azure

Sep 17, 2014

2014-09-17_8-59-21

SQL Azure 有提供各種情境的資料同步方式,雲端 與  雲端 或 雲端 與 本地端。而本地端 SQL Server 資料庫與 SQL Azure 進行同步,主要是透過本地端的工具程式 (SQL Azure Data Sync Agent Preview) 做媒介, 本文是說明安裝與設定細節。







本地端安裝 Sync Client Agent

本地端做同步的主機上須安裝 SQL Azure Data Sync Agent Preview,此軟體有有兩項必要安裝:

  1. SQL Server 2012 CLR Types - x86 version for US-EN (1033) locale (下載點1)。
  2. SQL Server 2012 Shared Management Objects - x86 version for US-EN (1033) locale (下載點2)。

接著安裝主程式 SQL Azure Data Sync Agent Preview (下載點3)。

以上這些安裝程式目前版本以 SQL 2012 英文版為主,筆者事先若有安裝中文版SQL 2012,最後是將中文版先移除。

 

同步主機上須建立一個 Windows 帳號可以連上 SQL Server。

 

安裝主程式最後需要輸入此帳號,記得要輸入完整格式,如 domain\domainUser 或 localcomputer\localUser。

 

 

安裝程式懶人包下載

 

 

建立 Sync Agent

SQL Azure 同步相關功能在 Azure 管理中心 > SQL DATABASE > SYNC,

image

 

首先要先建立一個 Sync Agent,如下圖示最下方 [ADD SYNC] > [New Sync Agent]

image

 

輸入名稱與選擇地區,即完成新增。

image

 

新增完成後,取得 [Manage Key],回到同步主機上開啟 [Microsoft SQL Data Sync Agent Preview] > [Submit Agent Key] > 貼上 > 按下 [OK]

image

 

回到 Azure 管理中心畫面會出現一筆 Client 的資料

 

 

建立 Sync Group

這個步驟主要是設定來源與目的地的關係,來源是選 SQL Azure資料庫,而目的地就是上一步驟的 SQL Agent。

 

與新增 Sync Agent 相同,從 SQL Azure 管理畫面最下方 [ADD SYNC] > [New Sync Group]

輸入名稱與選擇地區後,下一步

image

 

設定來源資料庫:

image

最後一個選項需注意,當衝突發生時以那一方優先。

 

設定目的地資料庫,選擇 Sync Agent

image

最後一個選項是設定單向或雙向同步。

 

設定同步資料表

點擊 Sync Group 名稱 > SYNC RULES > 最下方 [DEFINE] > 選擇資料庫

 

接著選取要同步的資料表與欄位,按下方 [SAVE]

image

筆者按下儲存有發生錯誤,原因是該資料表尚未建立 Clustered Index,補建立後可以正常儲存。

 

進入 CONFIGURE 可以設定自動同步與頻率

image

目前可以設定的最小時間是 5 分鐘。

 

順利的話,以上算是完成將 SQL 從地端與雲端同步的作法。

 

同步發生失敗時(Synchronization failed),可以先從以下幾個地方檢查起

  1. SQL Azure > Sync Group > Log
  2. 地端同步機器上的事件檢視器
  3. 地端同步機器SQL Data Sync 記錄檔
    C:\Program Files (x86)\Microsoft SQL Data Sync\logs

 

 

相關連結

  • Getting Started with Azure SQL Data Sync [link page]
  • SQL Azure Data Sync - An Overview [Channel9 Video]
  • SQL Azure Data Sync- Synchronize Data across On-Premise and Cloud (E2C) [Channel9 Video]

 

PS: 以上所做的是資料同步,並非複寫 (Replication),目前地端尚無法與雲端做複寫的功能 (感謝 小朱 說明)。