適用於:Azure SQL Database
Azure SQL Managed Instance
你可以用
注意
使用私用鏈接匯入或匯出 Azure SQL Database 目前仍在預覽階段。
使用 Azure portal
觀看此影片,了解如何從 Azure 入口網站的 BACPAC 檔案匯入,或繼續閱讀:
Azure 入口網站 僅支援在 Azure SQL Database 中從儲存在 Azure Blob 儲存體的 BACPAC 檔案建立單一資料庫。- 若要將資料庫從 BACPAC 檔案遷移到 Azure SQL Managed Instance,請使用 SQL Server Management Studio 或
SqlPackage命令列工具。 Azure 入口網站和 Azure PowerShell 目前不支援。
警告
由 SqlPackage 產生超過 150 GB 的 BACPAC 檔案,可能會無法從Azure入口網站匯入,或Azure PowerShell會跳出錯誤訊息,顯示 File contains corrupted data。 這是已知問題的結果,解決方法是使用 SqlPackage 命令列工具匯入 BACPAC 檔案。 如需詳細資訊,請參閱 SqlPackage 和問題記錄。
注意
處理透過Azure入口網站或 PowerShell 提交的匯入/匯出請求的機器,需要儲存 BACPAC 檔案以及由 Data-Tier Application Framework(DacFX)產生的暫存檔案。 大小相同的資料庫所需的磁碟空間有很大的差異,且最多可能需要資料庫大小三倍的磁碟空間。 執行匯入/匯出要求的電腦僅具有 450 GB 的本機磁碟空間。 因此,某些要求可能會失敗,並出現錯誤 There is not enough space on the disk。 在此情況下,因應措施是在具有足夠本機磁碟空間的計算機上執行 SqlPackage 命令行公用程式。 我們鼓勵使用 SqlPackage 命令行公用程式匯入/匯出大於 150GB 的資料庫,以避免此問題。
若要使用 Azure 入口網站從 BACPAC 檔案匯入新的單一資料庫,請開啟相應的伺服器頁面,然後在工具列選擇 Import database。
請選擇 [備份]。 選擇存放資料庫的儲存帳號,然後選擇要匯入的 BACPAC 檔案。
指定新的資料庫大小(通常與來源相同),並提供目的地 SQL Server 憑證。 關於Azure SQL Database中新資料庫可能的值列表,請參見 Create Database。
請選擇 [確定]。
若要監視匯入進度,請開啟資料庫的伺服器頁面,然後在 [設定] 下選取 [匯入/匯出記錄]。 匯入成功時,會處於 [已完成] 狀態。
若要確認伺服器上的資料庫為線上狀態,請選取 [SQL 資料庫],並確認新的資料庫為 [線上] 狀態。
使用管理身份驗證匯入(預覽)
Azure SQL Database 支援使用 managed identity 驗證匯入 BACPAC 檔案。 此選項可實現完全免憑證的匯入操作,建議用於停用 SQL 認證或強制僅使用 Microsoft Entra 認證的環境。
你可以將資料庫匯入 新的資料庫,或是 現有的空白資料庫。
詳細教學請參見 「使用管理身份與匯入(預覽)」。
若要使用管理身份驗證匯入 BACPAC 檔案,需進行以下設定:
- 使用者指派的 Managed Identity (UAMI) 分配給 邏輯伺服器,以用於 Azure SQL Database。
- 伺服器的管理身份設定為 Microsoft Entra administrator。
- 管理身份會被指派給來源Azure Storage帳號上的 Storage Blob Data Reader 角色。 這個管理身份可以與伺服器指定的相同身份,也可以是不同的身份。
- 邏輯伺服器、管理身份和儲存帳號都位於 同一個Microsoft Entra租戶。
不支援下列情境:
- 跨租戶進口業務。
- 管理身份只能在資料庫層級上指派。
注意
使用託管身分驗證的匯入目前處於預覽階段,且僅支援 Azure SQL Database。
使用 SqlPackage
若要使用 SqlPackage 命令列工具匯入 SQL Server 資料庫,請參見 import 參數與屬性。 你可以下載 Windows、macOS 或 Linux 的最新版本 SqlPackage。
為了規模與效能,我們建議在大多數生產環境中使用 SqlPackage,而非使用 Azure 入口網站。 關於使用 BACPAC 檔案進行遷移的 SQL Server 客戶諮詢團隊部落格,請參見 使用 BACPAC 檔案從 SQL Server 遷移到 Azure SQL Database。
以 DTU 為基礎的佈建模型支援每一層的選取資料庫大小上限值。 匯入資料庫時 使用其中一個支援的值。
下列 SqlPackage 命令會將 AdventureWorks2008R2 資料庫從本機儲存體匯入至名為 mynewserver20170403 的邏輯 SQL 伺服器。 其會建立名為 myMigratedDatabase、具有進階服務層級和 P6 服務目標的新資料庫。 請針對您的環境適當變更這些值。
SqlPackage /a:import /tcs:"Data Source=<serverName>.database.windows.net;Initial Catalog=<migratedDatabase>;User Id=<userId>;Password=<password>" /sf:AdventureWorks2008R2.bacpac /p:DatabaseEdition=Premium /p:DatabaseServiceObjective=P6
重要
要從企業防火牆後方連接 Azure SQL Database,防火牆必須開啟埠 1433。 要連接SQL Managed Instance,必須擁有點對站連線或快速路由連線。
除了使用者名稱和密碼外,你可以使用 Microsoft Entra ID(前稱 Azure Active Directory)。 目前,匯入/匯出服務在需要多重驗證時不支援 Microsoft Entra ID 認證。 以使用者名稱與密碼參數取代 /ua:true 與 /tid:"yourdomain.onmicrosoft.com"。 此範例展示了如何使用 SqlPackage 並搭配 Microsoft Entra 認證匯入資料庫:
SqlPackage /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /ua:True /tid:"apptest.onmicrosoft.com"
Visual Studio Code
Visual Studio Code 的 MSSQL 擴充功能是一個免費且開源的擴充功能,適用於 Windows、macOS 和 Linux。 擴充套件包含 SqlPackage 操作的資料層應用程式(預覽) 體驗,包括匯出與匯入。 欲了解更多安裝與使用擴充功能的資訊,請參閱 Visual Studio Code 的
使用 PowerShell
注意
Azure SQL Managed Instance目前不支援使用 Azure PowerShell 從 BACPAC 檔案將資料庫遷移到實例資料庫。 要匯入 SQL 管理的實例,請使用 SQL Server Management Studio 或 SQLPackage。
注意
處理透過入口網站或 PowerShell 提交的匯入/匯出請求的機器,需要儲存 BACPAC 檔案以及由資料層應用程式架構(DacFX)產生的暫存檔案。 大小相同的資料庫所需的磁碟空間有很大的差異,且最多可能需要資料庫大小三倍的空間。 執行匯入/匯出要求的電腦僅具有 450 GB 的本機磁碟空間。 因此,有些請求可能會因錯誤而失敗: There is not enough space on the disk。 在此情況下,因應措施是在具有足夠本機磁碟空間的機器上執行 SqlPackage。 匯入/匯出大於 150GB 的資料庫時,請使用 SqlPackage,以避免發生此問題。
重要
PowerShell Azure Resource Manager(AzureRM)模組於 2024 年 2 月 29 日被棄用。 所有未來的開發都應該使用 Az.Sql 模組。 建議使用者從 AzureRM 遷移至 Az PowerShell 模組,以確保持續支援和更新。 不再維護或支援 AzureRM 模組。 Az PowerShell 模組和 AzureRM 模組中命令的自變數基本上完全相同。 如需其相容性的詳細資訊,請參閱 新的 Az PowerShell 模組簡介。
使用 New-AzSqlDatabaseImport cmdlet 向 Azure 提交匯入資料庫請求。 匯入可能需要一些時間才能完成,視資料庫大小而定。 以 DTU 為基礎的佈建模型支援每一層的選取資料庫大小上限值。 匯入資料庫時 使用其中一個支援的值。
$importRequest = New-AzSqlDatabaseImport -ResourceGroupName "<resourceGroupName>" `
-ServerName "<serverName>" -DatabaseName "<databaseName>" `
-DatabaseMaxSizeBytes "<databaseSizeInBytes>" -StorageKeyType "StorageAccessKey" `
-StorageKey $(Get-AzStorageAccountKey `
-ResourceGroupName "<resourceGroupName>" -StorageAccountName "<storageAccountName>").Value[0] `
-StorageUri "https://myStorageAccount.blob.core.windows.net/importsample/sample.bacpac" `
-Edition "Premium" -ServiceObjectiveName "P6" `
-AdministratorLogin "<userId>" `
-AdministratorLoginPassword $(ConvertTo-SecureString -String "<password>" -AsPlainText -Force)
您可以使用 Get-AzSqlDatabaseImportExportStatus Cmdlet 來查看匯入的進度。 如果在要求後立即執行此 Cmdlet,通常會傳回 Status: InProgress。 當您看到 Status: Succeeded 時,表示匯入已完成。
$importStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
[Console]::Write("Importing")
while ($importStatus.Status -eq "InProgress") {
$importStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
[Console]::Write(".")
Start-Sleep -s 10
}
[Console]::WriteLine("")
$importStatus
提示
另一個腳本範例,請參見 Use PowerShell 將 BACPAC 檔案匯入 SQL 資料庫。
取消匯入要求
使用資料庫作業 - 取消 API 或 Stop-AzSqlDatabaseActivity PowerShell 命令,如下列範例所示:
Stop-AzSqlDatabaseActivity -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName -OperationId $Operation.OperationId
取消匯入所需的權限
若要取消匯入作業,您必須具備下列角色之一:
- SQL 資料庫貢獻者角色
- 一個自訂Azure基於角色的存取控制 RBAC 角色,擁有
Microsoft.Sql/servers/databases/operations權限
新資料庫的相容性層級
資料庫匯入後的相容性層級會以來源資料庫的相容性層級為基礎。
匯入資料庫後,可以選擇於目前的相容性層級或更高層級運作資料庫。 關於以特定相容性等級操作資料庫的影響與選項,請參見 ALTER DATABASE 相容性等級。 如需其他與相容性等級相關的資料庫層級設定資訊,請參見 ALTER DATABASE SCOPED CONFIGURATION。
限制
- Azure portal、Azure PowerShell 或 Azure CLI 不支援將資料匯入 elastic pool 的資料庫。 相反地,在彈性集區中建立資料庫,然後使用 SQLPackage Import,或使用任何方法將數據匯入單一資料庫,然後將資料庫移至彈性集區。
- 當「允許存取 Azure 服務」設為關閉時,匯入導出服務無法運作。 不過,你可以透過手動從 Azure 虛擬機執行 SqlPackage,或直接用 DacFx API 在程式碼中匯出來來解決這個問題。
- 匯入不支援在建立新資料庫時指定備份儲存冗餘,並會使用預設的地理冗餘備份儲存冗餘來建立。 為了解決這個問題,先用 Azure 入口網站或 PowerShell 建立一個空資料庫,並保留所需的備份備份冗餘,然後將 BACPAC 匯入這個空資料庫。
- 目前不支援在防火牆後方的儲存體。
- 匯入過程中,不要建立同名的資料庫。 匯入處理程序會建立指定名稱的新資料庫。
- 目前,匯入/匯出服務在需要多重驗證時不支援 Microsoft Entra ID 認證。
- 匯入/匯出服務僅支援 SQL 認證和 Microsoft Entra ID。 匯入/匯出與 Microsoft Identity 應用程式註冊不相容。
其他工具
您也可以使用這些精靈。