適用于: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托管實例。
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)。
提示
還可以使用事務(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)兼容性問題。請參閱什么是托管實例。