將 SQL Server 數(shù)據(jù)庫遷移到 Azure SQL 數(shù)據(jù)庫

來源: Microsoft
作者:Microsoft
時間:2021-02-23
17263
本文介紹將SQL Server 2005或更高版本的數(shù)據(jù)庫遷移到Azure SQL數(shù)據(jù)庫的主要方法。有關(guān)遷移到Azure SQL托管實例的信息,請參閱將SQL Server實例遷移到Azure SQL托管實例。有關(guān)選擇遷移選項和遷移到Azure SQL的工具的指南,請參閱遷移到AZURE sql

適用于:Azure SQL數(shù)據(jù)庫

本文介紹將SQL Server 2005或更高版本的數(shù)據(jù)庫遷移到Azure SQL數(shù)據(jù)庫的主要方法。有關(guān)遷移到Azure SQL托管實例的信息,請參閱將SQL Server實例遷移到Azure SQL托管實例。有關(guān)選擇遷移選項和遷移到Azure SQL的工具的指南,請參閱遷移到AZURE sql

遷移到單一數(shù)據(jù)庫或共用數(shù)據(jù)庫

將SQL Server 2005或更高版本的數(shù)據(jù)庫遷移到Azure SQL數(shù)據(jù)庫有兩種主要方法。第一種方法相對簡單,但遷移過程中需要一段時間(可能較長)的停機(jī)。第二種方法更復(fù)雜,但在遷移過程中的停機(jī)時間大大縮短。

兩種方法均需使用Data Migration Assistant(DMA)確保源數(shù)據(jù)庫與Azure SQL數(shù)據(jù)庫兼容。SQL數(shù)據(jù)庫除了要解決服務(wù)器級操作和跨數(shù)據(jù)庫操作的相關(guān)問題之外,還要解決與SQL Server的功能奇偶一致性問題。依賴部分支持或不受支持的函數(shù)的數(shù)據(jù)庫和應(yīng)用程序需要進(jìn)行某種程度的重新設(shè)計來修復(fù)這些不兼容性,然后才能遷移SQL Server數(shù)據(jù)庫。

備注

要將非SQL Server數(shù)據(jù)庫(包括Microsoft Access、Sybase、MySQL Oracle和DB2)遷移到Azure SQL數(shù)據(jù)庫,請參閱SQL Server遷移助手。

方法1:在遷移過程中需停機(jī)的遷移

如果可以承受一定的停機(jī)時間,或者正在針對以后的遷移執(zhí)行生產(chǎn)數(shù)據(jù)庫的測試遷移,請使用此方法遷移到單一數(shù)據(jù)庫或共用數(shù)據(jù)庫。有關(guān)教程,請參閱遷移SQL Server數(shù)據(jù)庫。

下面的列表包含使用此方法將SQL Server數(shù)據(jù)庫遷移到單一數(shù)據(jù)庫或共用數(shù)據(jù)庫的常規(guī)工作流。有關(guān)遷移到SQL托管實例的信息,請參閱遷移到SQL托管實例。

azure-sql-migration-sql-db.png

1.使用最新版數(shù)據(jù)遷移助手(DMA)評估數(shù)據(jù)庫的兼容性。

2.以Transact-SQL腳本形式準(zhǔn)備任何所需的修補(bǔ)程序。

3.進(jìn)行遷移時,創(chuàng)建正在遷移的源數(shù)據(jù)庫的事務(wù)一致副本,或暫停源數(shù)據(jù)庫中發(fā)生的新事務(wù)。實現(xiàn)后一種選擇的方法包括禁用客戶端連接或創(chuàng)建數(shù)據(jù)庫快照。遷移后,可以使用事務(wù)復(fù)制來更新已遷移的數(shù)據(jù)庫,該數(shù)據(jù)庫包含遷移的截止時間點后發(fā)生的更改。請參閱使用事務(wù)遷移進(jìn)行遷移。

4.部署Transact-SQL腳本,將修補(bǔ)程序應(yīng)用到數(shù)據(jù)庫副本。

5.通過使用數(shù)據(jù)遷移助手,將數(shù)據(jù)庫副本遷移到Azure SQL數(shù)據(jù)庫中的新數(shù)據(jù)庫。

備注

還可以使用BACPAC文件,而不是DMA。請參閱將BACPAC文件導(dǎo)入到Azure SQL數(shù)據(jù)庫中的新數(shù)據(jù)庫。

優(yōu)化遷移過程中的數(shù)據(jù)傳輸性能

以下列表包含的建議可幫助你在導(dǎo)入過程中獲得最佳性能。

·若要獲得最高的傳輸性能,請在預(yù)算允許范圍內(nèi)選擇最高的服務(wù)層級和計算大小。為了節(jié)省資金,可以在遷移完成后縮減規(guī)模。

·盡量縮短BACPAC文件和目標(biāo)數(shù)據(jù)中心的距離。

·在遷移過程中禁用自動統(tǒng)計

·將表和索引分區(qū)

·刪除已編制索引的視圖,在完成后重新創(chuàng)建這些視圖

·將很少查詢的歷史數(shù)據(jù)轉(zhuǎn)移到其他數(shù)據(jù)庫,將這些歷史數(shù)據(jù)遷移到Azure SQL數(shù)據(jù)庫中的單獨數(shù)據(jù)庫。然后,可以使用彈性查詢來查詢這些歷史數(shù)據(jù)。

遷移完成后優(yōu)化性能

在遷移完成后更新統(tǒng)計信息并進(jìn)行完全掃描。

方法2:使用事務(wù)復(fù)制

如果在發(fā)生遷移時你無法承受從生產(chǎn)中刪除SQL Server數(shù)據(jù)庫的后果,可以使用SQL Server事務(wù)復(fù)制作為遷移解決方案。若要使用此方法,源數(shù)據(jù)庫必須滿足事務(wù)復(fù)制要求且兼容Azure SQL數(shù)據(jù)庫。有關(guān)使用AlwaysOn的SQL復(fù)制的信息,請參閱配置AlwaysOn可用性組(SQL Server)的復(fù)制。

要使用此解決方案,請將Azure SQL數(shù)據(jù)庫中的數(shù)據(jù)庫配置為要遷移的SQL Server實例的訂閱服務(wù)器。在新的事務(wù)不斷發(fā)生時,事務(wù)復(fù)制分發(fā)器將對要同步的數(shù)據(jù)庫(發(fā)布服務(wù)器)中的數(shù)據(jù)進(jìn)行同步。

使用事務(wù)復(fù)制時,對數(shù)據(jù)或架構(gòu)所做的所有更改都會顯示在Azure SQL數(shù)據(jù)庫中的數(shù)據(jù)庫中。同步完成后,如果你已準(zhǔn)備好進(jìn)行遷移,則可更改應(yīng)用程序的連接字符串,使其指向數(shù)據(jù)庫。一旦事務(wù)復(fù)制清空保留在源數(shù)據(jù)庫中的任何更改,并且所有應(yīng)用程序都指向Azure DB,即可卸載事務(wù)復(fù)制。Azure SQL數(shù)據(jù)庫中的數(shù)據(jù)庫現(xiàn)在是生產(chǎn)系統(tǒng)。

seedcloudtr.png

提示

還可以使用事務(wù)復(fù)制來遷移源數(shù)據(jù)庫的子集。復(fù)制到Azure SQL數(shù)據(jù)庫的發(fā)布可以限制為復(fù)制的數(shù)據(jù)庫中表的子集。對于所復(fù)制的每一個表,可以將數(shù)據(jù)限制為行的子集和/或列的子集。

使用事務(wù)復(fù)制工作流遷移到SQL數(shù)據(jù)庫

重要

使用最新版本的SQL Server Management Studio以與Azure和SQL數(shù)據(jù)庫的更新保持同步。較舊版本的SQL Server Management Studio不能將SQL數(shù)據(jù)庫設(shè)置為訂閱服務(wù)器。更新SQL Server Management Studio。

1.設(shè)置分發(fā)

使用SQL Server Management Studio(SSMS)

使用Transact-SQL

2.創(chuàng)建發(fā)布

使用SQL Server Management Studio(SSMS)

使用Transact-SQL

3.創(chuàng)建訂閱

使用SQL Server Management Studio(SSMS)

使用Transact-SQL

有關(guān)遷移到SQL數(shù)據(jù)庫的一些提示和差異

使用本地分發(fā)服務(wù)器

這會對服務(wù)器產(chǎn)生性能影響。

如果對性能的影響不可接受,可以使用另一臺服務(wù)器,但這又會增大管理的復(fù)雜性。

選擇快照文件夾時,請確保選擇的文件夾足夠大,可以保存想要復(fù)制的每個表的BCP。

快照創(chuàng)建操作在完成之前會鎖定關(guān)聯(lián)的表,因此,請適當(dāng)?shù)赜媱澓每煺铡?/span>

Azure SQL數(shù)據(jù)庫中僅支持推送訂閱。只能從源數(shù)據(jù)庫添加訂閱服務(wù)器。

解決數(shù)據(jù)庫遷移的兼容性問題

根據(jù)源數(shù)據(jù)庫中的SQL Server版本以及正在遷移的數(shù)據(jù)庫復(fù)雜性,可能會發(fā)現(xiàn)各種不同的不兼容性問題。舊版SQL Server的兼容性問題更多。除了使用所選搜索引擎的目標(biāo)Internet搜索以外,還可以使用以下資源:

Azure SQL數(shù)據(jù)庫中不支持的SQL Server數(shù)據(jù)庫功能

SQL Server 2016中已停用的數(shù)據(jù)庫引擎功能

SQL Server 2014中已停用的數(shù)據(jù)庫引擎功能

SQL Server 2012中已停用的數(shù)據(jù)庫引擎功能

SQL Server 2008 R2中已停用的數(shù)據(jù)庫引擎功能

SQL Server 2005中已停用的數(shù)據(jù)庫引擎功能

除了搜索Internet和使用這些資源以外,還可使用AZURE SQL數(shù)據(jù)庫或StackOverflow的Microsoft Q&問題頁面。StackOverflow

重要

使用Azure SQL托管實例可遷移現(xiàn)有SQL Server實例及其數(shù)據(jù)庫,而幾乎不會出現(xiàn)兼容性問題。請參閱什么是托管實例。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于Microsoft,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家