Applies to:Azure SQL Database
Azure SQL Managed Instance
SQL Server データベースは、.bacpac ファイルを使用してAzure SQL DatabaseまたはSQL Managed Instanceにインポートできます。 データは、Azure Blob Storage に格納されている BACPAC ファイル (Standard ストレージのみ) またはオンプレミスの場所のローカル ストレージからインポートできます。 より高速なリソースを多く提供することでインポート速度を最大化するには、インポート プロセスの中でデータベースをより高いサービス層とコンピューティング サイズにスケーリングします。 インポートが正常に完了した後でスケールダウンすることができます。
注意
Azure ポータルを使用する
このビデオを見て、Azure ポータルで BACPAC ファイルからインポートする方法、または読み続ける方法を確認してください。
- Azure portalonly では、Azure Blob Storage に格納されている BACPAC ファイルから Azure SQL Database と only に 1 つのデータベースを作成できます。
- BACPAC ファイルからデータベースを Azure SQL Managed Instance に移行するには、SQL Server Management Studio または
SqlPackageコマンド ライン ユーティリティを使用します。 Azure ポータルとAzure PowerShellは現在サポートされていません。
警告
SqlPackage から生成された 150 GB を超える BACPAC ファイルは、Azure ポータルまたは Azure PowerShell からのインポートに失敗する可能性があり、File contains corrupted data と記載されたエラーメッセージが表示される場合があります。 これは既知の問題の結果であり、回避策は、 コマンドライン ユーティリティを使用して BACPAC ファイルをインポートすることです。 詳細については、「SqlPackage」と「問題のログ記録」を参照してください。
注意
Azure ポータルまたは PowerShell を介して送信されたインポート/エクスポート要求を処理するマシンは、BACPAC ファイルと、Data-Tier Application Framework (DacFX) によって生成された一時ファイルを格納する必要があります。 必要なディスク領域は、同じサイズのデータベースでも大きく異なります。データベースのサイズの最大 3 倍のディスク領域が必要になることがあります。 インポート/エクスポート要求を実行するマシンには、450 GB のローカル ディスク領域しかありません。 その結果、一部の要求がエラー で失敗することがあります。 この場合の回避策は、十分なローカル ディスク領域を持つコンピューターで SqlPackage コマンド ライン ユーティリティを実行することです。 この問題を回避するには、SqlPackage コマンド ライン ユーティリティを使用して、150 GB を超えるデータベースをインポートまたはエクスポートすることをお勧めします。
Azure ポータルを使用して BACPAC ファイルから新しい単一データベースにインポートするには、適切なサーバー ページを開き、ツール バーで Import database を選択します。
[バックアップの選択] を選びます。 データベースをホストしているストレージ アカウントを選択し、インポート元の BACPAC ファイルを選択します。
新しいデータベース サイズ (通常は配信元と同じ) を指定し、宛先SQL Server資格情報を指定します。 Azure SQL Databaseの新しいデータベースで使用可能な値の一覧については、「Create Databaseを参照してください。
[OK] を選択します。
インポートの進行状況を監視するには、データベースのサーバー ページを開き、 [設定] の下にある [インポート/エクスポート履歴] を選択します。 成功すると、インポートは完了状態になります。
データベースがサーバーで稼働していることを確認するには、 [SQL データベース] を選択し、新しいデータベースが [オンライン] であることを確認します。
マネージド ID 認証を使用したインポート (プレビュー)
Azure SQL Databaseでは、管理 ID 認証を使用した BACPAC ファイルのインポートがサポートされています。 このオプションを使用すると、資格情報を完全に使用しないインポート操作が可能になり、SQL 認証を無効にしたり、Microsoft Entraのみの認証を適用したりする環境に推奨されます。
データベースは、 新しいデータベースまたは 既存の空のデータベースにインポートできます。
詳細なチュートリアルについては、「 インポートとエクスポートでマネージド ID を使用する (プレビュー)」を参照してください。
マネージド ID 認証を使用して BACPAC ファイルをインポートするには、次の構成が必要です。
- ユーザー割り当てマネージド ID (UAMI)はAzure SQL Databaseの論理サーバーに割り当てられます。
- サーバーには、Microsoft Entra 管理者として構成されたマネージド ID があります。
- マネージド ID は、ソース Azure Storage アカウントの Storage BLOB データ閲覧者 ロールに割り当てられます。 このマネージド ID は、サーバーに割り当てられている ID または別の ID と同じにすることができます。
- 論理サーバー、マネージド ID、ストレージ アカウントは、same Microsoft Entra テナントにあります。
次のシナリオはサポートされていません。
- テナント間のインポート操作。
- データベース レベルでのみ割り当てられたマネージド ID。
注意
マネージド ID 認証を使用したインポートは現在、preview にあり、Azure SQL Databaseでのみ使用できます。
SqlPackage を使用する
SqlPackage コマンド ライン ユーティリティを使用してSQL Server データベースをインポートするには、「パラメーターとプロパティのインポートを参照してください。 Windows、macOS、または Linux 用の最新の SqlPackage をダウンロードできます。
スケーリングとパフォーマンスのために、Azure ポータルを使用するのではなく、ほとんどの運用環境で SqlPackage を使用することをお勧めします。
BACPAC ファイルを使用した移行に関するSQL Serverカスタマー アドバイザリ チームのブログについては、「 BACPAC Files を使用したSQL ServerからAzure SQL Databaseへの移行を参照してください。
DTU ベースのプロビジョニング モデルでは、レベルごとにデータベースの最大サイズを選択できます。 データベースをインポートする際は、これらのサポートされている値のいずれかを使用してください。
次の SqlPackage コマンドを実行すると、 データベースが、ローカル ストレージから という論理 SQL サーバーにインポートされます。 という新しいデータベースが作成され、サービス レベルは Premium、サービス目標は 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 (formerly Azure Active Directory) を使用できます。 現時点では、MFA が必要な場合、Import/Export サービスはMicrosoft Entra ID認証をサポートしていません。 と のユーザー名とパスワードのパラメーターを置き換えます。 この例では、Microsoft Entra認証で SqlPackage を使用してデータベースをインポートする方法を示します。
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 ファイルと、Data-Tier Application Framework (DacFX) によって生成された一時ファイルを格納する必要があります。 必要なディスク領域は、同じサイズの DB でも大きく異なり、最大 3 倍のデータベースのサイズが必要になります。 インポート/エクスポート要求を実行するマシンには、450 GB のローカル ディスク領域しかありません。 その結果、 というエラーで一部の要求が失敗する可能性があります。 この場合の回避策は、ローカル ディスク領域が十分にあるマシンで SqlPackage を実行することです。 150 GB を超えるデータベースをインポート/エクスポートする場合は、SqlPackage を使用してこの問題を回避します。
- PowerShell
- Azure CLI
重要
PowerShell Azure Resource Manager (AzureRM) モジュールは、2024 年 2 月 29 日に非推奨になりました。 今後のすべての開発では、Az.Sql モジュールを使用する必要があります。 ユーザーは、引き続きサポートと更新を行うために、AzureRM から Az PowerShell モジュールに移行することをお勧めします。 AzureRM モジュールは維持またはサポートされなくなりました。 Az PowerShell モジュールと AzureRM モジュールのコマンドの引数は、ほぼ同じです。 互換性の詳細については、「新しい Az PowerShell モジュールの概要」を参照してください。
New-AzSqlDatabaseImport コマンドレットを使用して、インポート データベース要求を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 コマンドレットを使用できます。 要求直後にこのコマンドレットを実行すると、通常は が返されます。 を確認したらインポートは完了です。
$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
ヒント
別のスクリプト例については、「 PowerShell を使用して BACPAC ファイルを SQL Database のデータベースにインポートする」を参照してください。
インポート要求を取り消す
次の例のように、データベース操作 - キャンセル API または Stop-AzSqlDatabaseActivity PowerShell コマンドを使います。
Stop-AzSqlDatabaseActivity -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName -OperationId $Operation.OperationId
インポートをキャンセルするめに必要なアクセス許可
インポート操作をキャンセルするには、次のいずれかのロールのメンバーである必要があります。
- SQL DB 共同作成者ロール
許可を持つカスタム Azure ロールベースのアクセス制御 RBAC ロール
新しいデータベースの互換性レベル
インポートされたデータベースの互換性レベルは、ソース データベースの互換性レベルに基づきます。
データベースをインポートした後に、データベースを期限内の互換性レベルで運用するか、より高いレベルで運用するかを選択できます。 特定の互換性レベルでデータベースを操作するための影響とオプションの詳細については、 ALTER DATABASE 互換性レベルを参照してください。 互換性レベルに関連するその他のデータベース レベルの設定については、「 ALTER DATABASE SCOPED CONFIGURATION」を参照してください。
制限事項
- エラスティック プール内のデータベースへのインポートは、Azure ポータル、Azure PowerShell、またはAzure CLIではサポートされていません。 代わりに、エラスティック プールにデータベースを作成し、SQLPackage Importを使用するか、任意のメソッドを使用してデータを 1 つのデータベースにインポートしてから、データベースをエラスティック プールに移動します。
- [Azure サービスへのアクセスを許可する] が [OFF] に設定されている場合、エクスポート サービスのインポートは機能しません。 ただし、問題を回避するには、Azure VM から SqlPackage を手動で実行するか、DacFx API を使用してコード内で直接エクスポートを実行します。
- インポートでは、新しいデータベースの作成時にバックアップ ストレージの冗長性を指定することはサポートされておらず、既定の geo 冗長バックアップ ストレージ冗長性を使用して作成されます。 回避するには、まず、Azure ポータルまたは PowerShell を使用して目的のバックアップ ストレージ冗長性を持つ空のデータベースを作成し、その空のデータベースに BACPAC をインポートします。
- ファイアウォールの背後にある Storage は現在サポートされていません。
- インポート プロセス中は、同じ名前のデータベースを作成しないでください。 インポート プロセスでは、指定した名前の新しいデータベースが作成されます。
- 現時点では、MFA が必要な場合、Import/Export サービスはMicrosoft Entra ID認証をサポートしていません。
- Import\Export サービスは、SQL 認証とMicrosoft Entra IDのみをサポートします。 Import\Export は、Microsoft ID アプリケーションの登録と互換性がありません。
その他のツール
次のウィザードも利用できます。
- SQL Server Management Studio のデータ層アプリケーション ウィザードをインポートします。
- SQL Server インポートおよびエクスポート ウィザード。
関連するコンテンツ
Quickstart: SSMS を使用して、Azure SQL Databaseまたは Azure SQL Managed Instance - BACPAC ファイルを使用して SQL Server から Azure SQL Database への移行
SQL Server Azure SQL Database - Azure Storage セキュリティ ガイド