適用于:Azure SQL數(shù)據(jù)庫(kù)
本文介紹將SQL Server 2005或更高版本的數(shù)據(jù)庫(kù)遷移到Azure SQL數(shù)據(jù)庫(kù)的主要方法。有關(guān)遷移到Azure SQL托管實(shí)例的信息,請(qǐng)參閱將SQL Server實(shí)例遷移到Azure SQL托管實(shí)例。有關(guān)選擇遷移選項(xiàng)和遷移到Azure SQL的工具的指南,請(qǐng)參閱遷移到AZURE sql
遷移到單一數(shù)據(jù)庫(kù)或共用數(shù)據(jù)庫(kù)
將SQL Server 2005或更高版本的數(shù)據(jù)庫(kù)遷移到Azure SQL數(shù)據(jù)庫(kù)有兩種主要方法。第一種方法相對(duì)簡(jiǎn)單,但遷移過(guò)程中需要一段時(shí)間(可能較長(zhǎng))的停機(jī)。第二種方法更復(fù)雜,但在遷移過(guò)程中的停機(jī)時(shí)間大大縮短。
兩種方法均需使用Data Migration Assistant(DMA)確保源數(shù)據(jù)庫(kù)與Azure SQL數(shù)據(jù)庫(kù)兼容。SQL數(shù)據(jù)庫(kù)除了要解決服務(wù)器級(jí)操作和跨數(shù)據(jù)庫(kù)操作的相關(guān)問(wèn)題之外,還要解決與SQL Server的功能奇偶一致性問(wèn)題。依賴(lài)部分支持或不受支持的函數(shù)的數(shù)據(jù)庫(kù)和應(yīng)用程序需要進(jìn)行某種程度的重新設(shè)計(jì)來(lái)修復(fù)這些不兼容性,然后才能遷移SQL Server數(shù)據(jù)庫(kù)。
備注
要將非SQL Server數(shù)據(jù)庫(kù)(包括Microsoft Access、Sybase、MySQL Oracle和DB2)遷移到Azure SQL數(shù)據(jù)庫(kù),請(qǐng)參閱SQL Server遷移助手。
方法1:在遷移過(guò)程中需停機(jī)的遷移
如果可以承受一定的停機(jī)時(shí)間,或者正在針對(duì)以后的遷移執(zhí)行生產(chǎn)數(shù)據(jù)庫(kù)的測(cè)試遷移,請(qǐng)使用此方法遷移到單一數(shù)據(jù)庫(kù)或共用數(shù)據(jù)庫(kù)。有關(guān)教程,請(qǐng)參閱遷移SQL Server數(shù)據(jù)庫(kù)。
下面的列表包含使用此方法將SQL Server數(shù)據(jù)庫(kù)遷移到單一數(shù)據(jù)庫(kù)或共用數(shù)據(jù)庫(kù)的常規(guī)工作流。有關(guān)遷移到SQL托管實(shí)例的信息,請(qǐng)參閱遷移到SQL托管實(shí)例。
1.使用最新版數(shù)據(jù)遷移助手(DMA)評(píng)估數(shù)據(jù)庫(kù)的兼容性。
2.以Transact-SQL腳本形式準(zhǔn)備任何所需的修補(bǔ)程序。
3.進(jìn)行遷移時(shí),創(chuàng)建正在遷移的源數(shù)據(jù)庫(kù)的事務(wù)一致副本,或暫停源數(shù)據(jù)庫(kù)中發(fā)生的新事務(wù)。實(shí)現(xiàn)后一種選擇的方法包括禁用客戶(hù)端連接或創(chuàng)建數(shù)據(jù)庫(kù)快照。遷移后,可以使用事務(wù)復(fù)制來(lái)更新已遷移的數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)包含遷移的截止時(shí)間點(diǎn)后發(fā)生的更改。請(qǐng)參閱使用事務(wù)遷移進(jìn)行遷移。
4.部署Transact-SQL腳本,將修補(bǔ)程序應(yīng)用到數(shù)據(jù)庫(kù)副本。
5.通過(guò)使用數(shù)據(jù)遷移助手,將數(shù)據(jù)庫(kù)副本遷移到Azure SQL數(shù)據(jù)庫(kù)中的新數(shù)據(jù)庫(kù)。
備注
還可以使用BACPAC文件,而不是DMA。請(qǐng)參閱將BACPAC文件導(dǎo)入到Azure SQL數(shù)據(jù)庫(kù)中的新數(shù)據(jù)庫(kù)。
優(yōu)化遷移過(guò)程中的數(shù)據(jù)傳輸性能
以下列表包含的建議可幫助你在導(dǎo)入過(guò)程中獲得最佳性能。
·若要獲得最高的傳輸性能,請(qǐng)?jiān)陬A(yù)算允許范圍內(nèi)選擇最高的服務(wù)層級(jí)和計(jì)算大小。為了節(jié)省資金,可以在遷移完成后縮減規(guī)模。
·盡量縮短BACPAC文件和目標(biāo)數(shù)據(jù)中心的距離。
·在遷移過(guò)程中禁用自動(dòng)統(tǒng)計(jì)
·將表和索引分區(qū)
·刪除已編制索引的視圖,在完成后重新創(chuàng)建這些視圖
·將很少查詢(xún)的歷史數(shù)據(jù)轉(zhuǎn)移到其他數(shù)據(jù)庫(kù),將這些歷史數(shù)據(jù)遷移到Azure SQL數(shù)據(jù)庫(kù)中的單獨(dú)數(shù)據(jù)庫(kù)。然后,可以使用彈性查詢(xún)來(lái)查詢(xún)這些歷史數(shù)據(jù)。
遷移完成后優(yōu)化性能
在遷移完成后更新統(tǒng)計(jì)信息并進(jìn)行完全掃描。
方法2:使用事務(wù)復(fù)制
如果在發(fā)生遷移時(shí)你無(wú)法承受從生產(chǎn)中刪除SQL Server數(shù)據(jù)庫(kù)的后果,可以使用SQL Server事務(wù)復(fù)制作為遷移解決方案。若要使用此方法,源數(shù)據(jù)庫(kù)必須滿(mǎn)足事務(wù)復(fù)制要求且兼容Azure SQL數(shù)據(jù)庫(kù)。有關(guān)使用AlwaysOn的SQL復(fù)制的信息,請(qǐng)參閱配置AlwaysOn可用性組(SQL Server)的復(fù)制。
要使用此解決方案,請(qǐng)將Azure SQL數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)配置為要遷移的SQL Server實(shí)例的訂閱服務(wù)器。在新的事務(wù)不斷發(fā)生時(shí),事務(wù)復(fù)制分發(fā)器將對(duì)要同步的數(shù)據(jù)庫(kù)(發(fā)布服務(wù)器)中的數(shù)據(jù)進(jìn)行同步。
使用事務(wù)復(fù)制時(shí),對(duì)數(shù)據(jù)或架構(gòu)所做的所有更改都會(huì)顯示在Azure SQL數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)中。同步完成后,如果你已準(zhǔn)備好進(jìn)行遷移,則可更改應(yīng)用程序的連接字符串,使其指向數(shù)據(jù)庫(kù)。一旦事務(wù)復(fù)制清空保留在源數(shù)據(jù)庫(kù)中的任何更改,并且所有應(yīng)用程序都指向Azure DB,即可卸載事務(wù)復(fù)制。Azure SQL數(shù)據(jù)庫(kù)中的數(shù)據(jù)庫(kù)現(xiàn)在是生產(chǎn)系統(tǒng)。
提示
還可以使用事務(wù)復(fù)制來(lái)遷移源數(shù)據(jù)庫(kù)的子集。復(fù)制到Azure SQL數(shù)據(jù)庫(kù)的發(fā)布可以限制為復(fù)制的數(shù)據(jù)庫(kù)中表的子集。對(duì)于所復(fù)制的每一個(gè)表,可以將數(shù)據(jù)限制為行的子集和/或列的子集。
使用事務(wù)復(fù)制工作流遷移到SQL數(shù)據(jù)庫(kù)
重要
使用最新版本的SQL Server Management Studio以與Azure和SQL數(shù)據(jù)庫(kù)的更新保持同步。較舊版本的SQL Server Management Studio不能將SQL數(shù)據(jù)庫(kù)設(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ù)庫(kù)的一些提示和差異
使用本地分發(fā)服務(wù)器
這會(huì)對(duì)服務(wù)器產(chǎn)生性能影響。
如果對(duì)性能的影響不可接受,可以使用另一臺(tái)服務(wù)器,但這又會(huì)增大管理的復(fù)雜性。
選擇快照文件夾時(shí),請(qǐng)確保選擇的文件夾足夠大,可以保存想要復(fù)制的每個(gè)表的BCP。
快照創(chuàng)建操作在完成之前會(huì)鎖定關(guān)聯(lián)的表,因此,請(qǐng)適當(dāng)?shù)赜?jì)劃好快照。
Azure SQL數(shù)據(jù)庫(kù)中僅支持推送訂閱。只能從源數(shù)據(jù)庫(kù)添加訂閱服務(wù)器。
解決數(shù)據(jù)庫(kù)遷移的兼容性問(wèn)題
根據(jù)源數(shù)據(jù)庫(kù)中的SQL Server版本以及正在遷移的數(shù)據(jù)庫(kù)復(fù)雜性,可能會(huì)發(fā)現(xiàn)各種不同的不兼容性問(wèn)題。舊版SQL Server的兼容性問(wèn)題更多。除了使用所選搜索引擎的目標(biāo)Internet搜索以外,還可以使用以下資源:
Azure SQL數(shù)據(jù)庫(kù)中不支持的SQL Server數(shù)據(jù)庫(kù)功能
SQL Server 2016中已停用的數(shù)據(jù)庫(kù)引擎功能
SQL Server 2014中已停用的數(shù)據(jù)庫(kù)引擎功能
SQL Server 2012中已停用的數(shù)據(jù)庫(kù)引擎功能
SQL Server 2008 R2中已停用的數(shù)據(jù)庫(kù)引擎功能
SQL Server 2005中已停用的數(shù)據(jù)庫(kù)引擎功能
除了搜索Internet和使用這些資源以外,還可使用AZURE SQL數(shù)據(jù)庫(kù)或StackOverflow的Microsoft Q&問(wèn)題頁(yè)面。StackOverflow
重要
使用Azure SQL托管實(shí)例可遷移現(xiàn)有SQL Server實(shí)例及其數(shù)據(jù)庫(kù),而幾乎不會(huì)出現(xiàn)兼容性問(wèn)題。請(qǐng)參閱什么是托管實(shí)例。