匯出 (0) 列印
全部展開

Azure SQL Database 的資料移轉:工具和技巧

更新日期: 2014年5月

本文件所提供的指引是有關將資料定義 (結構描述) 和資料移轉至 Microsoft Azure SQL Database。它主要是指從 SQL Server 一次移轉至 Azure SQL 資料庫。

Microsoft Azure 提供了許多個資料儲存選項。您可以選擇在專案中使用一個或多個選項。

Microsoft Azure SQL Database 是 Azure 平台上以服務方式提供的 SQL Server 技術。以雲端為基礎的 Azure SQL 資料庫 方案可以提供許多優點,包括快速佈建、具有成本效益的延展性、高可用性,以及降低管理負擔。Azure SQL 資料庫 支援用於內部部署 SQL Server 應用程式的相同工具和開發作法。因此,大部分的開發人員應該會感到很熟悉。

SQL Server 和 Azure SQL 資料庫 的長期目標是要在功能與特性上達到對稱和一致性,不過目前在架構和實作方面存在一些差異,這些差異必須在移轉資料庫至 Azure SQL 資料庫 以及開發 Azure SQL 資料庫 方案時處理。

將資料庫移轉至 Azure SQL 資料庫 之前,請務必了解移轉時機以及 Azure SQL 資料庫 與 SQL Server 之間的差異。

Azure 平台具有三個主要儲存方案。Azure 儲存體包含資料表、Blob 和佇列。設計 Azure 方案時,您應該評估不同的選項,並且使用每個儲存機制,為部分方案提供最佳效能。若要深入了解新的 Azure 服務層和功能,請閱讀<Azure SQL 服務層 (版本)>。

 

儲存方案

目的

大小上限

Microsoft Azure SQL Database

關聯式資料庫管理系統

150 GB

Azure 儲存體

blob

持續儲存大型二進位物件,例如視訊或音訊

200 GB 或 1 TB

資料表

持續儲存結構化資料

100 TB

佇列

持續儲存處理序間的訊息

100 TB

本機儲存體

每個執行個體的暫時儲存體

250 GB 到 2 TB

本機儲存體會為本機執行的應用程式執行個體提供暫時儲存體。本機存放區只能由本機執行個體存取。如果執行個體在不同的硬體上重新啟動,例如在硬體故障或硬體維護的情況下,本機存放區中的資料將不會跟隨執行個體。如果您的應用程式需要可靠的資料持續性、想要在執行個體之間共用資料,或存取 Azure 外部資料,請考慮改用 Azure 儲存體帳戶或 Microsoft Azure SQL Database。

Azure SQL 資料庫 會透過伺服器端執行的查詢、交易和預存程序提供資料處理功能,而且只有結果會傳回給應用程式。如果您的應用程式需要對大小有限的資料進行處理並牽涉到連接和相關作業,那麼 Azure SQL 資料庫 就是一個好選擇。如果您的應用程式會儲存並擷取大型資料集,但是不需要資料處理能力,那麼 Azure 資料表儲存體是較佳選擇。

目前為 Premium 層設定的 Azure SQL 資料庫 大小限制為 500 GB。Azure SQL 資料庫 比 Azure 儲存體昂貴許多。因此,請考慮將部落格資料移至 Azure Blog 儲存體。如此一來,就可以減少資料大小限制的壓力並且降低營運成本。若要深入了解新的 Azure 服務層和功能,請閱讀<Azure SQL 服務層 (版本)>。

與 SQL Server 相似之處在於,Azure SQL 資料庫 會公開表格式資料流 (TDS) 介面以提供 Transact-SQL 資料庫存取。這樣可讓您的資料庫應用程式以使用 SQL Server 的相同方式來使用 Azure SQL 資料庫。

與 SQL Server 管理不同的是,Azure SQL 資料庫 會從實體管理中劃分出邏輯管理的部分;您會繼續管理資料庫、登入、使用者和角色,而 Microsoft 會管理並設定實體硬體,例如硬碟機、伺服器和儲存體。由於 Microsoft 會處理所有實體管理工作,因此 Azure SQL 資料庫 和 SQL Server 之間在管理、佈建、Transact-SQL 支援、程式撰寫模型和功能方面會有一些差異。

下列清單會提供一些主要差異的高階概觀:

  • 資料庫大小

    Azure SQL 資料庫 目前提供下列版本:

    • Web Edition,大小為 1 GB 和 5 GB。

    • Business Edition,大小為 10、20、30、40、50、100 和 150 GB。

    • Premium Edition 支援高達 500 GB 的資料庫。

    請務必檢查您的資料庫大小,以及它是否能容納在 Azure SQL 資料庫 所使用的資料庫限額內。如果您的資料庫超過 Azure SQL 資料庫 大小限制,則您必須檢查資料庫並查看是否能將它分解為較小的資料庫 (也就是分區化),或將大型資料移至 Window Azure Blob 儲存體。如需資料庫分區化的詳細資訊,請參閱<向外擴充 Azure SQL Database>。

  • 驗證

    Azure SQL 資料庫 僅支援 SQL 驗證。您必須考慮是否需要變更應用程式所使用的驗證配置。如需有關安全性限制的詳細資訊,請參閱<安全性方針和限制>。

  • SQL Server 資料庫版本

    Azure SQL 資料庫 是根據 SQL Server 2014。如果您想要將 SQL Server 2000 或 SQL Server 2005 資料庫移轉至 Azure SQL 資料庫,就必須確定資料庫與 SQL Server 2014 相容。您將會發現最佳路徑就是從 SQL Server 2014 移轉至 Azure SQL 資料庫。您可以先進行 SQL Server 2014 的內部部署升級,然後再移轉至 Azure SQL 資料庫。這裡有一些絕佳的資源可協助您從舊版 SQL Server 移轉:升級為 SQL Server 2014Microsoft SQL Server 2014 Upgrade Advisor

  • 結構描述

    Azure SQL 資料庫 不支援堆積。所有資料表都必須具有叢集索引,然後才能插入資料。如需有關叢集索引需求的詳細資訊,請參閱<Azure SQL Database 內幕>。

  • Transact-SQL 支援能力

    Microsoft Azure SQL Database 支援 Transact-SQL 語言的子集。您必須先將指令碼修改為僅包含支援的 Transact-SQL 陳述式,然後再將資料庫部署至 Azure SQL 資料庫。如需詳細資訊,請參閱<Transact-SQL 參考 (資料庫引擎)>。

  • Use 陳述式

    在 Azure SQL 資料庫 中,USE 陳述式不會在資料庫之間切換。若要變更資料庫,您必須直接連接至資料庫。

  • 定價

    Azure SQL 資料庫 訂用帳戶的價格是指每個資料庫的價格,因版本而異。只要有資料進出資料中心,也會產生資料傳輸量的額外費用。您可以選擇在自己的內部部署環境中執行應用程式程式碼並且連接至資料中心內的 Azure SQL 資料庫,也可以在 Azure 中執行應用程式程式碼 (與您的 Azure SQL 資料庫 裝載在相同的資料中心內)。在 Azure 中執行應用程式程式碼可避免產生額外的資料傳輸費用。不論是哪一種情況,您都應該注意,網際網路的網路延遲無法使用任何一種模式來降低。如需詳細資訊,請參閱<定價概觀>。

  • 功能限制

    Azure SQL 資料庫 目前不支援部分 SQL Server 功能。這些功能包括:SQL 代理程式、全文檢索搜尋、Service Broker、備份與還原、Common Language Runtime 和 SQL Server Integration Services。如需詳細清單,請參閱<SQL Server 的功能限制>。若要深入了解備份和還原選項,請閱讀<Azure SQL Database 備份和還原>。

使用 Azure SQL 資料庫 之類的雲端資料庫時,它需要透過網際網路或其他複雜網路進行連接。因此,您應該準備處理非預期的連接中斷。

Azure SQL 資料庫 可在共用資源上提供大規模的多租戶資料庫服務。為了對所有 Azure SQL 資料庫 客戶提供良好的體驗,您的服務連接可能會由於許多狀況而關閉。

下面是連接終止的原因清單:

  • 網路延遲

    延遲會導致傳輸資料至 Azure SQL 資料庫 所需的時間增加。降低這個影響的最佳方式就是使用多個並行資料流來傳輸資料。不過,平行處理的效率會受限於網路的頻寬。

    Azure SQL 資料庫 可讓您在不同的資料中心內建立資料庫。您的所在位置與每個資料中心之間的網路延遲會因您的位置以及網路連線能力而有所不同。為了協助減少網路延遲,請選取最接近多數使用者的資料中心。如需有關測量網路延遲的詳細資訊,請參閱<測試 Azure SQL Database 的用戶端延遲>。

    在 Azure 中裝載您的應用程式程式碼,對於應用程式的效能來說是相當有益的,因為它能將與應用程式對 Azure SQL 資料庫 的資料要求相關聯的網路延遲降至最低。

    將網路往返減至最少也有助於減少網路相關問題。

  • 資料庫容錯移轉

    Azure SQL 資料庫 會將多個重複的資料複本複寫到多部實體伺服器,以維持資料可用性和業務續航力。發生硬體故障或進行升級時,Azure SQL 資料庫 會提供自動容錯移轉的功能,以最佳化應用程式的可用性。目前,某些容錯移轉動作會造成工作階段突然終止。

  • 負載平衡

    Azure SQL 資料庫 中的負載平衡器可確保資料中心內實體伺服器和服務的最佳使用量。當某部電腦的 CPU 使用量、輸入/輸出 (I/O) 延遲或忙碌的工作者數目超過臨界值時,Azure SQL 資料庫 可能會終止交易並中斷連接工作階段。

  • 節流

    為了確保所有訂閱者都會收到適當的資源共用,而且沒有任何訂閱者會獨佔資源而犧牲其他訂閱者的權益,Azure SQL 資料庫 可能會在某些狀況下關閉或「節流」訂閱者連接。Azure SQL 資料庫 引擎節流服務會持續監視特定效能臨界值以評估系統的健全狀況,而且可能會根據訂閱者影響系統健全狀況的範圍,針對特定訂閱者起始不同的節流層級。

    Azure SQL 資料庫 引擎節流會監視下列效能臨界值:

    • 配置給使用中 Azure SQL 資料庫 實體資料庫的空間百分比,彈性和固定限制百分比是相同的。

    • 配置給使用中 Azure SQL 資料庫 記錄檔的空間百分比。記錄檔是在訂閱者之間共用的。彈性和固定限制百分比是不同的。

    • 寫入記錄磁碟機的延遲毫秒,彈性和固定限制百分比是不同的。

    • 讀取資料檔案的延遲毫秒,彈性和固定限制百分比是相同的。

    • 處理器使用量,彈性和固定限制百分比是相同的。

    • 個別資料庫的大小相對於資料庫訂閱允許的大小上限,彈性和固定限制百分比是相同的。

    • 服務資料庫之使用中要求的工作者總數,彈性和固定限制百分比是不同的。如果超過此臨界值,選擇要封鎖之資料庫的準則就會與其他臨界值的情況不同。使用最高工作者數目的資料庫會比發生最高流量比率的資料庫更有可能成為節流候選。

如需詳細資訊,請參閱<Azure SQL Database 連接管理>和<Azure SQL Database 效能和彈性指南>。

處理連接中斷的最佳方式就是重新建立連接,然後重新執行失敗的命令或查詢。如需詳細資訊,請參閱<暫時性錯誤處理架構>。

您可以對資料庫進行一些動作,以便改善移轉效能:

  • 延遲建立非叢集索引或停用非叢集索引。載入資料之前建立的其他索引可能會大幅增加載入相同資料量所花費的時間。

  • 停用觸發程序並約束檢查。觸發程序可能會在資料列插入資料表時引發,讓資料列重新插入另一份資料表。觸發程序可能會導致延遲,而且您可能不想要重新插入這些插入類型。

  • 如果匯入資料時是依照資料表的叢集索引來排序,可提升大量匯入的效能。如需詳細資訊,請參閱<控制大量匯入資料時的排序順序>。

SQL Server Integration Services (SSIS) 和 bcp 公用程式能夠有效處理大型資料移轉。

將大型資料載入 Azure SQL 資料庫 時,建議您最好將資料分割到多個並行資料流中,以便達到最佳效能。

根據預設,資料檔中的所有資料列是以一個批次匯入。若要在多個批次之間分散資料列,請盡可能指定批次大小。如果有任何批次的交易失敗,只回復目前批次的插入項。之後的失敗不會影響已認可的交易所匯入的批次。最好針對您的特定案例和環境測試各種批次大小設定,找出最佳的批次大小。

目前有各種工具可將資料庫移轉至 Azure SQL 資料庫。一般而言,資料庫移轉包含結構描述移轉和資料移轉。有些工具支援其中一種移轉,有些則兩種都支援。您甚至可以使用大量複製應用程式開發介面來撰寫自訂的資料上傳應用程式。

 

工具

結構描述

Azure SQL 資料庫 相容性檢查

資料

資料傳輸效率

附註

DAC 封裝

  • 包含所有資料庫物件的實體,但不含資料

  • 完整 Azure SQL 資料庫 支援

DAC BACPAC 匯入匯出

  • 匯出/匯入 DAC 以及具有 DAC 架構的資料

  • 僅限雲端支援的服務可用

  • 在 CodePlex 上提供 SQL DAC 範例

SSMS 產生指令碼精靈

部分

  • 具有 Azure SQL 資料庫 指令碼產生的明確選項

  • 適用於小型資料庫

bcp

  • 有效率地將資料傳輸至現有的資料表

  • 每個 bcp 命令都會傳輸一個表格

Azure SQL 資料庫 移轉精靈

  • 絕佳功能,例如評估追蹤檔案

  • CodePlex 上的開放原始碼

  • Microsoft 不支援

SQL Server Integration Services

  • 最大彈性

  • 在資料來源之間直接傳輸而不登陸檔案

SQL Server 匯入和匯出精靈

  • 以 SSIS 為基礎的簡單 UI,也可以在 SSMS 中使用

Azure SQL 資料庫 移轉小幫手可用來將資料庫從 Access、MySQL、Oracle 或 Sybase 移轉至 Azure SQL 資料庫。

Microsoft Codename “Data Transfer” 可以將 CSV 或 Excel 檔案中的資料傳輸至 Azure SQL 資料庫。

若要將資料從某個 Azure SQL 資料庫 移轉至另一個 Azure SQL 資料庫,您可以使用 Azure SQL 資料庫 複製

Azure SQL 資料庫 支援資料庫複製功能。這項功能會在 Azure SQL 資料庫 中建立新的資料庫,而這個資料庫與現有資料庫的複本在交易上是一致的。若要複製資料庫,您必須連接到要在其中建立新資料庫之 Azure SQL 資料庫 伺服器的 master 資料庫,然後使用 CREATE DATABASE 命令:

CREATE DATABASE destination_database_name AS COPY OF 
[source_server_name.]source_database_name

新的資料庫可以位於相同的伺服器或不同的伺服器。執行此陳述式的使用者必須是目的地伺服器 (要建立新資料庫) 的 dbmanager 角色,而且必須是來源資料庫的 dbowner。如需詳細資訊,請參閱<在 Azure SQL Database 中複製資料庫>。

資料層應用程式 (DAC) 是在 SQL Server 2008 R2 中導入的,而且支援 Visual Studio 2010 的開發人員工具。它們可用於封裝資料庫的結構描述、程式碼和組態,以便部署至其他伺服器。當 DAC 已備妥可以部署時,它會內建在 DAC 封裝 (.bacpac) 中,此封裝是以 XML 格式包含 DAC 定義的壓縮檔案。您可以從 SQL Server Management Studio 匯出資料庫結構描述至 DAC 封裝,然後將封裝部署至 Azure SQL 資料庫。

note附註
DACPAC 格式與 BACPAC 格式不同。BACPAC 格式會擴充 DACPAC 格式,除了標準的 .dacpac 檔案內容之外,還包含中繼資料檔案和 JavaScript 物件標記法 (JSON) 編碼的資料表資料。BACPAC 格式將在 DAC 匯入匯出一節中討論。

在部署之前,您可以選擇使用 Visual Studio 2010 來修改 DAC 封裝。您可以在 DAC 專案中指定部署前和部署後指令碼。這些指令碼是可執行任何動作的 Transact-SQL 指令碼,包括在部署後指令碼中插入資料。但是,不建議使用 DAC 封裝來插入大量資料。

DAC 隨附於 SQL Server 20008 R2。將 SQL Server 資料庫結構描述移轉至 Azure SQL 資料庫 包含兩個主要步驟:

  1. 從 SQL Server 資料庫中擷取 DAC 封裝:

    「擷取資料層應用程式精靈」可用來根據現有的資料庫建置 DAC 封裝。DAC 封裝包含資料庫中的選取物件,以及相關聯的執行個體層級物件,例如對應至資料庫使用者的登入。

    下面是開啟精靈的螢幕擷取畫面:



    此精靈包含下列主要步驟:

    1. 設定 DAC 屬性,包括 DAC 應用程式名稱、版本、描述和封裝檔案位置。

    2. 驗證 DAC 是否支援所有資料庫物件。

    3. 建置封裝。

    DAC 只能從 Azure SQL 資料庫 或 SQL Server 2005 Service Pack 4 (SP4) 或更新版本的資料庫中進行擷取。如果 DAC 或包含的使用者中不支援資料庫中的物件,則無法擷取 DAC。如需有關 DAC 所支援之物件類型的詳細資訊,請參閱<SQL Server 物件與版本的 DAC 支援>。

  2. 將 DAC 封裝部署至 Azure SQL 資料庫:

    「部署資料層應用程式精靈」可用來部署 DAC 封裝。您必須先從 SQL Server Management Studio 連接到 Azure SQL 資料庫 伺服器。如果資料庫不存在,精靈就會建立資料庫。此精靈會將 DAC 封裝部署到與您在 [物件總管] 階層中選取之節點相關聯的 Database Engine 執行個體。例如,在下列螢幕擷取畫面中,它會將封裝部署到名為 maqqarly23.database.windows.net 的 SQL Server:

    Important重要事項
    建議您最好先檢閱 DAC 封裝的內容,然後再將它部署至生產環境,尤其是部署的封裝並非在您的組織中開發的情況。如需詳細資訊,請參閱<驗證 DAC 封裝>。

    此精靈包含下列主要步驟:

    1. 選取 DAC 封裝。

    2. 驗證封裝的內容。

    3. 設定資料庫部署屬性,您可以在其中指定 Azure SQL 資料庫。

    4. 部署封裝。

除了使用此精靈以外,您也可以使用 PowerShell 搭配 dacstore.install() 方法,將結構描述移轉至 Azure SQL 資料庫。

資料層應用程式 (DAC) 是用來開發、部署及管理資料層物件的自主單位。DAC 可讓資料層開發人員和資料庫管理員將 Microsoft SQL Server 物件 (包括資料庫物件和執行個體物件) 封裝到一個稱為 DAC 封裝 (.dacpac 檔案) 的實體。BACPAC 格式會擴充 DACPAC 格式,除了標準的 .dacpac 檔案內容之外,還包含中繼資料檔案和 JavaScript 物件標記法 (JSON) 編碼的資料表資料。您可以將 SQL Server 資料庫封裝到 .bacpac 檔案,並使用它來將資料庫移轉至 Azure SQL 資料庫。

note附註
DACPAC 與 BACPAC 很相似,但實際上以相當不同的案例為目標。DACPAC 著重於擷取及部署結構描述。其主要使用案例是部署至開發、測試和生產環境。

BACPAC 著重於擷取結構描述和資料。它是資料庫備份的邏輯對等項目,並不能用來升級現有資料庫。BACPAC 的主要使用案例是將資料庫從某個伺服器移至另一個伺服器 (或移至 Azure SQL 資料庫),以及以開放式格式封存現有資料庫。

匯入和匯出 Azure SQL 資料庫 的服務是以公開形式提供。此服務可以直接在 Azure SQL 資料庫 與 Azure Blob 儲存體之間匯入或匯出 BACPAC 檔案。匯入和匯出 Azure SQL 資料庫 的服務會提供一些用來提交要求的公用 REST 端點。

Azure 平台管理入口網站具有呼叫匯入和匯出 Azure SQL 資料庫 的服務的介面。

SQL Server Management Studio 目前不支援將資料庫匯出至 BACPAC 檔案。您可以利用 DAC 應用程式開發介面來匯入及匯出資料。

「SQL DAC 範例」會示範如何使用資料層應用程式架構應用程式開發介面,將資料庫從 SQL Server 移轉至 Azure SQL 資料庫。此封裝提供了兩個命令列公用程式及其原始程式碼:

  • DAC 匯入和匯出用戶端工具可用來匯出和匯入 bacpac 檔案。

  • DAC 匯入和匯出服務用戶端可用來呼叫 Azure SQL 資料庫 的匯入和匯出服務,以便在 Azure Blob 儲存體與 Azure SQL 資料庫 之間匯入和匯出 bacpac 檔案。

    將 bacpac 檔案複製到 Azure Blob 儲存體的其中一種方式就是使用 Microsoft Codename “Data Transfer”。如需詳細資訊,請參閱<Microsoft Codename Data Transfer>一節。

note附註
使用資料層應用程式 (DAC) 架構來匯入和匯出資料至 Azure SQL 資料庫 的功能目前僅以 CodePlex 範例的形式提供。這些工具僅由社群提供支援。

本節將示範如何使用 SQL DAC 範例的用戶端工具,將資料庫從 SQL Server 移轉至 Azure SQL 資料庫。

您可以從 CodePlex 下載 SQL DAC 範例。若要執行範例,您也必須在電腦上安裝資料層應用程式架構

使用這些工具來移轉資料庫之前,您必須先建立目的地 Azure SQL 資料庫。使用此工具進行移轉包含兩個步驟:

  1. 匯出 SQL Server 資料庫

    假設有一個在 SQL Server 2014 上執行的資料庫,而且使用者擁有其整合式安全性存取權。您可以利用下列引數來呼叫範例 EXE,藉以將資料庫匯出至 “.bacpac” 檔案:

    DacCli.exe -s serverName -d databaseName -f C:\filePath\exportFileName.bacpac -x -e
    
  2. 將封裝匯入Azure SQL 資料庫

    一旦匯出之後,您就可以利用下列引數,將匯出檔案匯入 Azure SQL 資料庫:

    DacCli.exe -s serverName.database.windows.net -d databaseName -f C:\filePath\exportFileName.bacpac -i -u userName -p password
    

產生指令碼精靈可用來建立 SQL Server 資料庫及/或選取之資料庫中的相關物件的 Transact-SQL 指令碼。然後,您可以使用指令碼將結構描述和/或資料傳輸至 Azure SQL 資料庫。

產生指令碼精靈是隨 SQL Server 2008 R2 一起安裝的。您可以從 SQL Server Management Studio 2008 R2 開啟此精靈。下列螢幕擷取畫面將示範如何開啟此精靈:

此精靈包含下列主要步驟:

  1. 選擇要匯出的物件。

  2. 設定指令碼選項。您可以選擇將指令碼儲存至檔案、剪貼簿、新的查詢視窗,或是將它發行到 Web 服務。

  3. 設定進階指令碼選項。

    根據預設會針對獨立 SQL Server 執行個體產生指令碼。若要變更組態,您必須按一下 [設定指令碼編寫選項] 對話方塊的 [進階] 按鈕,然後將 [適用於 Database Engine 類型的指令碼] 屬性設定為 [SQL Database]



    您也可以根據需求將 [要編寫指令碼的資料類型] 設定為下列其中一項:僅限結構描述僅限資料結構描述與資料

在建立指令碼之後,您可以選擇先修改指令碼,然後對 Azure SQL 資料庫 執行指令碼以傳輸資料庫。

bcp 公用程式是專為高效能、大量上傳至 SQL Server 或 Azure SQL 資料庫 而設計的命令列公用程式。它不是移轉工具。它不會擷取或建立結構描述。您必須先使用其中一個結構描述移轉工具,將結構描述傳輸至 Azure SQL 資料庫。

note附註
您可以使用 bcp 來備份和還原 Azure SQL 資料庫 上的資料。

note附註
Azure SQL 資料庫 移轉精靈會使用 bcp。

bcp 公用程式隨附於 SQL Server。Azure SQL 資料庫 完全支援 SQL Server 2014 隨附的版本。

使用 bcp 包含兩個步驟:

  1. 匯出資料至資料檔案。

    若要從 SQL Server 資料庫匯出資料,您可以在命令提示字元中執行下列陳述式:

    bcp tableName out C:\filePath\exportFileName.dat –S serverName –T –n -q
    
    out 參數表示將資料複製出 SQL Server。-n 參數利用資料的原生資料庫資料類型來執行大量複製作業。-q 參數在 bcp 公用程式和 SQL Server 執行個體之間的連接中,執行 SET QUOTED_IDENTIFIERS ON 陳述式。

  2. 將資料檔案匯入Azure SQL 資料庫

    若要將資料匯入 Azure SQL 資料庫,您必須先在目的地資料庫中建立結構描述,然後從命令提示字元執行 bcp 公用程式:

    Bcp tableName in c:\filePath\exportFileName.dat –n –U userName@serverName –S tcp:serverName.database.windows.net –P password –b batchSize
    
    –b 參數指定每一批次匯入資料的資料列數。每一批次會以個別交易的方式 (在認可之前匯入整個批次) 匯入及記錄。識別最佳批次大小並使用批次大小,是在資料移轉時減少 Azure SQL 資料庫 連接遺失的好作法。

下面是一些使用 bcp 來傳輸大量資料的最佳作法。

  1. 使用 –N 選項以原生模式移轉資料,就不需要資料類型轉換。

  2. 使用 –b 選項指定批次大小。根據預設,資料檔中的所有資料列是以一個批次匯入。如果發生交易失敗,只回復目前批次的插入項。

  3. 使用 –h “TABLOCK, ORDER(…)” 選項。–h “TABLOCK” 會指定在大量載入作業期間,需要大量更新資料表層級鎖定;否則,便取得資料列層級鎖定。它可以減少資料表上的鎖定競爭。–h “ORDER(…)” 選項會指定資料檔案中資料的排序次序。如果匯入資料時是依照資料表的叢集索引來排序,可提升大量匯入的效能。

您可以使用 –F 和 –L 選項來指定一般檔案中第一個和最後一個要上傳的資料列。這樣就不需要實體分割資料檔案以達成多個資料流上傳。

Azure SQL 資料庫 移轉精靈是協助將 SQL Server 2005/2008 或更新版本的資料庫移轉至 Azure SQL 資料庫 的開放原始碼 UI 工具。除了移轉資料之外,它也可以用來識別任何相容性問題、適當地修正問題並通知您已知的所有問題。

Azure SQL 資料庫 移轉精靈有處理連接遺失的內建邏輯。它會將交易分解為較小的群體並且執行,直到 Azure SQL 資料庫 終止連接為止。當精靈遇到連接錯誤時,它會重新建立 Azure SQL 資料庫 的新連接,並在上次成功的命令之後繼續處理。同樣地,當使用 bcp 將資料上傳至 Azure SQL 資料庫 時,精靈會將資料分割為較小的區段,並使用重試邏輯,確認在關閉連接之前最後成功上傳的記錄。然後它會使 bcp 重新啟動下一組記錄的資料上傳。

note附註
Azure SQL 資料庫 移轉精靈是由社群所建置並支援的開放原始碼工具。

您可以從 http://sqlazuremw.codeplex.com 下載 Azure SQL 資料庫 移轉精靈。將封裝解壓縮至本機電腦,然後執行 SQLAzureMW.exe。下面是應用程式的螢幕擷取畫面:

此精靈包含下列步驟:

  1. 選取您想要精靈逐步引導的程序。

  2. 選取要編寫指令碼的來源。

  3. 選取要編寫指令碼的資料庫物件。

  4. 產生指令碼。您之後可以選擇修改指令碼。

  5. 輸入連接到目標伺服器的所需資訊。您可以選擇建立目的地 Azure SQL 資料庫。

  6. 對目的地伺服器執行指令碼。

SQL Server Integration Services (SSIS) 可用於執行各種資料移轉工作。在操作多個異質資料來源和目的地時,它是一項功能強大的工具。這項工具支援來源與目的地之間的複雜工作流程和資料轉換。SSIS 不是以類似於 Azure SQL 資料庫 的 Azure 服務方式提供。您可以在內部部署 SQL Server 上執行 SSIS 封裝,傳送資料到 Azure SQL 資料庫。此外,您可以在 Azure 虛擬機器中執行的 SQL Server 上執行 SSIS 封裝,將資料傳送至 Microsoft Azure SQL Database。不過,SQL IaaS 也是裝載 SSIS 的選項。

SSIS 匯入/匯出精靈可讓使用者建立從單一資料來源移動資料至目的地而沒有轉換的封裝。此精靈可以快速地將各種來源類型的資料移至各種目的地類型,包括文字檔案和其他 SQL Server 執行個體。如需詳細資訊,請閱讀<作法:使用 Integration Services 將資料庫移轉至 Azure SQL Database>。

您必須使用 SQL Server 2008 R2 或更新版的 SSIS 來連接至 Azure SQL 資料庫。

ADO.NET 配接器具有 Azure SQL 資料庫 的必要支援。它特別為 Azure SQL 資料庫 提供了大量載入資料的選項。請使用 ADO.NET 目的地配接器,將資料傳輸至 Azure SQL 資料庫。不支援使用 OLEDB 連接至 Microsoft Azure SQL Database。

因為您的封裝可能會由於節流或網路問題而失敗,所以您可能會考慮以某種方式設計封裝,讓它能夠在失敗點繼續,而非重新啟動封裝。如需詳細資訊,請閱讀<適用於 Azure 和混合資料移動的 SSIS>(英文)。

設定 ADO.NET 目的地時,請務必使用 [盡可能使用大量插入] 選項。這可讓您使用大量載入功能以改善傳輸效能。. 如需詳細資訊,請閱讀<SSIS 操作及微調指南>。

SQL Server 匯入和匯出精靈會提供最簡單的方法,讓您針對簡單的匯入或匯出作業建立 SQL Server Integration Services 封裝。如需詳細資訊,請閱讀<作法:使用匯入和匯出精靈將資料庫移轉至 Azure SQL Database>。

此精靈支援下列資料來源:

  • .NET Framework Data Provider for ODBC

  • .NET Framework Data Provider for Oracle

  • .NET Framework Data Provider for SQL Server

  • 一般檔案來源

  • Microsoft OLE DB Provider for Analysis Services 10.0

  • Microsoft OLE DB Provider for Search

  • Microsoft OLE DB Provider for SQL Server

  • SQL Native Client

  • SQL Server Native Client 10.0

SQL Server 匯入和匯出精靈只能傳輸資料。使用此精靈之前,您必須先使用其中一種結構描述移轉工具 (產生指令碼精靈或 DAC 封裝) 來傳輸結構描述。

note附註
Integration Services 會在 64 位元電腦上安裝 SQL Server 匯入和匯出精靈 (DTSWizard.exe) 的 64 位元版本。不過,有些資料來源只有 32 位元提供者。若要使用這些資料來源,您可能必須安裝並執行此精靈的 32 位元版本。若要安裝 32 位元版本的精靈,請在安裝期間選取用戶端工具或 Business Intelligence Development Studio。

Microsoft Codename “Data Transfer” 是一項雲端服務,可讓您將資料從電腦傳輸至 Azure SQL 資料庫 或 Azure Blob 儲存體。您可以將任何資料格式上傳至 Azure Blob 儲存體,並且將以逗號分隔值 (CSV) 或 Microsoft Excel 格式 (.xlsx) 儲存的資料上傳至 Azure SQL 資料庫。當您將資料上傳至 Azure SQL 資料庫 時,它會轉換為資料庫資料表。

您可以在 https://web.datatransfer.azure.com/ 存取 Data Transfer 服務。在首頁上,您可以選擇匯入資料、管理資料集以及存放區。

Azure SQL 資料庫 的資料匯入程序包含下列步驟:

  • 輸入您的 Azure SQL 資料庫 認證。

  • 選擇要傳輸的檔案。

  • 分析資料檔案,然後傳輸資料。

SQL Server 移轉小幫手 (SSMA) 是一系列產品,可減少從 Oracle、Sybase、MySQL 和 Microsoft Access 資料庫移轉至 Azure SQL 資料庫 或 SQL Server 的成本和風險。SSMA 會將移轉所有各方面都自動化,包括移轉過程評估分析、結構描述和 SQL 陳述式轉換、資料移轉以及移轉測試。

SSMA 是 Web 下載項目。若要下載最新版本,請參閱 SQL Server 移轉工具產品頁面。在撰寫本文時,最新的版本如下所示:

SSMS 是使用以 Windows Installer 為基礎的精靈來安裝。SSMA 是免費的,但是您必須下載註冊金鑰。安裝並執行應用程式之後,應用程式會提示您註冊並下載註冊金鑰。

適用於 Access 之 SSMA 的移轉程序包含下列步驟:

  1. 建立新的移轉精靈。請務必在 [移轉至] 方塊中選取 Azure SQL 資料庫。

  2. 加入 Access 資料庫。

  3. 選取要移轉的 Access 物件。

  4. 連接到 Azure SQL 資料庫。

  5. 連結資料表。如果您想要使用現有的 Access 應用程式搭配 Azure SQL 資料庫,可以將原始的 Access 資料表連結至移轉的 Azure SQL 資料庫 資料表。連結會修改您的 Access 資料庫,讓查詢、表單、報表和資料存取頁面使用 Azure SQL 資料庫 中的資料,而非 Access 資料庫中的資料。

  6. 轉換選取的物件。

  7. 將轉換的物件載入 Azure SQL 資料庫。

  8. 移轉選取之 Access 物件的資料。

另請參閱

Microsoft 正展開一份線上問卷調查,了解您對於 MSDN 網站的看法。 如果您選擇參加,您離開 MSDN 網站時即會顯示線上問卷調查。

您是否想要參加?
顯示:
© 2014 Microsoft