次の方法で共有


BACPAC ファイルへのエクスポート - Azure SQL DatabaseとAzure SQL Managed Instance

Applies to:Azure SQL DatabaseAzure SQL Managed Instance

アーカイブのため、または別のプラットフォームに移行するためにデータベースをエクスポートする必要がある際は、データベース スキーマとデータを BACPAC ファイルにエクスポートできます。 BACPAC ファイルは、データベースのメタデータとデータを含む BACPAC の拡張子を持つ ZIP ファイルです。 BACPAC ファイルは、Azure Blob Storage またはオンプレミスの場所のローカル ストレージに格納でき、後で Azure SQL DatabaseAzure SQL Managed Instance、または SQL Server インスタンスにインポートされます。

考慮事項

エクスポートにトランザクション一貫性を持たせるために、書き込みアクティビティがエクスポート中に行われないようにするか、データベースのトランザクション上の一貫性が確保されたコピーからエクスポートを行うようにする必要があります

Blob Storage にエクスポートする場合、BACPAC ファイルの最大サイズは 200 GB です。 大きな BACPAC ファイルをアーカイブするには、SqlPackage でローカル ストレージにエクスポートします。

プライベート リンクを使用してAzure SQL Databaseをインポートまたはエクスポートはプレビュー段階です。

Azure Storageファイル名は、. で終わることはありません。また、スペース文字や < などの特殊文字を含めることはできません。 >*%&:\/?。 ファイル名の長さは、128 文字未満にする必要があります。

エクスポート操作が 20 時間を超える場合は取り消される可能性があります。 エクスポート中にパフォーマンスを向上させるには、次の操作を実行します。

  • コンピューティング サイズを一時的に増やします。

  • エクスポート中のすべての読み取りアクティビティと書き込みアクティビティを中止する。

  • すべての大きなテーブルに null 以外の値を持つ クラスター化インデックス を使用する。 クラスター化インデックスがないと、エクスポートが 6 から 12 時間よりも長くかかる場合に失敗する可能性があります。 これは、エクスポート サービスがテーブル スキャンを実行してテーブル全体をエクスポートしようとする必要があることが原因です。 テーブルがエクスポート用に最適化されているかどうかを判断する良い方法は、 を実行し、 が null ではなく、その値が適切な分布であることを確認することです。 詳細については、「DBCC SHOW_STATISTICS (Transact-SQL)を参照してください。

  • 大きなデータベースについては、BACPAC のエクスポートやインポートは、長い時間がかかる場合や、さまざまな理由で失敗する場合があります。

注意

BACPAC は、バックアップ操作と復元操作に使用することを意図していません。 Azureは、すべてのユーザー データベースのバックアップを自動的に作成します。 詳細については、「ビジネス継続性の概要」および「Azure SQL Database の自動バックアップ」または「Azure SQL Managed Instance の自動バックアップ」を参照してください。

Azure ポータルからエクスポートする

  • Azure ポータルを使用して、Azure SQL Database論理サーバー内のデータベースの BACPAC をエクスポートできます。
  • Azure ポータルを使用してデータベースの BACPAC を Azure SQL Managed Instance からエクスポートすることは現在サポートされていません。

注意

Azure ポータルまたは PowerShell を介して送信されたインポート/エクスポート要求を処理するマシンは、Data-Tier Application Framework (DacFX) によって生成された BACPAC ファイルと一時ファイルを格納する必要があります。 必要なディスク領域は、同じサイズのデータベースでも大きく異なります。データベースのサイズの最大 3 倍のディスク領域が必要になることがあります。 インポート/エクスポート要求を実行するマシンには、450 GB のローカル ディスク領域しかありません。 その結果、一部の要求がエラー で失敗することがあります。 この場合の回避策は、ローカル ディスク領域が十分にあるマシンで SqlPackage を実行することです。 この問題を回避するには、 SQLPackage ユーティリティ を使用して、150 GB を超えるデータベースをインポートまたはエクスポートします。

  1. Azure ポータル を使用してデータベースをエクスポートするには、データベースのページを開き、ツール バーの Export を選択します。

    [エクスポート] ボタンが強調表示されているスクリーンショット。

  2. BACPAC ファイル名を指定し、エクスポート用の既存のAzureストレージ アカウントとコンテナーを選択し、ソース データベースにアクセスするための適切な資格情報を指定します。 SQL Server admin login は、たとえAzure管理者であっても、Azure SQL DatabaseやAzure SQL Managed Instanceで管理者権限があるわけではないため、ここで必要です。

    ユーザー名とパスワードが指定された [データベースのエクスポート] ページを示すスクリーンショット。

  3. [OK] を選択します。

  4. エクスポート操作の進行状況を監視するには、エクスポートされたデータベースを含むサーバーのページを開きます。 [データ管理] で [インポート/エクスポート履歴] を選択します。

マネージド ID 認証を使用したエクスポート (プレビュー)

Azure SQL Database内のデータベースを BACPAC ファイルにエクスポートするには、管理 ID 認証を使用して、SQL 管理者パスワードまたはストレージ アクセス キーを指定する必要はありません。

詳細なチュートリアルについては、「 インポートとエクスポートでマネージド ID を使用する (プレビュー)」を参照してください。

マネージド ID 認証を使用して BACPAC ファイルをエクスポートするには、次の構成が必要です。

  • ユーザー割り当てマネージド ID (UAMI)はAzure SQL Databaseの論理サーバーに割り当てられます。
  • サーバーには、Microsoft Entra 管理者として構成されたマネージド ID があります。
  • マネージド ID は、ターゲット Azure Storage アカウントの Storage BLOB データ共同作成者 ロールに割り当てられます。 このマネージド ID は、サーバーに割り当てられている ID または別の ID と同じにすることができます。
  • 論理サーバー、マネージド ID、ストレージ アカウントは、same Microsoft Entra テナントにあります。

注意

マネージド ID 認証を使用したエクスポートは現在、preview にあり、Azure SQL Databaseでのみ使用できます。

SQLPackage ユーティリティ

ほとんどの運用環境では、スケールとパフォーマンスのために、SQLPackage ユーティリティの使用をお勧めします。 テーブルのサブセットに並行して複数の SqlPackage コマンドを実行し、インポートおよびエクスポート操作を高速化できます。

SQLPackage コマンドライン ユーティリティを使用して SQL Database のデータベースをエクスポートするには、エクスポートのパラメーターとプロパティに関するページを参照してください。 SQLPackage ユーティリティは、Windows、macOS、Linux で使用できます。

この例では、Active Directory ユニバーサル認証で SqlPackage を使用してデータベースをエクスポートする方法を示します。

SqlPackage /a:Export /tf:testExport.bacpac /scs:"Data Source=apptestserver.database.windows.net;Initial Catalog=MyDB;" /ua:True /tid:"apptest.onmicrosoft.com"

Visual Studio Code

Visual Studio Code用の MSSQL 拡張機能は、Windows、macOS、Linux で使用できる無料のオープン ソース拡張機能です。 この拡張機能には、エクスポートやインポートなど、SqlPackage 操作用の データ層アプリケーション (プレビュー) エクスペリエンスが含まれています。 拡張機能のインストールと使用の詳細については、Visual Studio Code の MSSQL 拡張機能を参照してください。

SQL Server Management Studio (SSMS)

SQL Server Management Studio は、Azure SQL DatabaseまたはSQL Managed Instance データベース内のデータベースを BACPAC ファイルにエクスポートするウィザードを提供します。 「データ層アプリケーションのエクスポート」を参照してください。

PowerShell

PowerShell を使用した Azure SQL Managed Instance からのデータベースの BACPAC のエクスポートはサポートされていません。 「考慮事項」を参照してください。

New-AzSqlDatabaseExport コマンドレットを使用して、エクスポート データベース要求を Azure SQL Database サービスに送信します。 データベースのサイズに応じて、エクスポート操作の完了に時間がかかる場合があります。

$exportRequest = New-AzSqlDatabaseExport -ResourceGroupName $ResourceGroupName -ServerName $ServerName `
  -DatabaseName $DatabaseName -StorageKeytype $StorageKeytype -StorageKey $StorageKey -StorageUri $BacpacUri `
  -AdministratorLogin $creds.UserName -AdministratorLoginPassword $creds.Password

エクスポート要求の状態を確認するには、Get-AzSqlDatabaseImportExportStatus コマンドレットを使用します。 要求直後にこのコマンドレットを実行すると、通常は Status : InProgress が返されます。 Status:Succeeded が表示された場合、エクスポートは完了しています。

$exportStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
[Console]::Write("Exporting")
while ($exportStatus.Status -eq "InProgress")
{
    Start-Sleep -s 10
    $exportStatus = Get-AzSqlDatabaseImportExportStatus -OperationStatusLink $exportRequest.OperationStatusLink
    [Console]::Write(".")
}
[Console]::WriteLine("")
$exportStatus

エクスポート要求を取り消す

データベース操作のキャンセル API または PowerShell の Stop-AzSqlDatabaseActivity コマンドを使用して、エクスポート要求を取り消します。 PowerShell コマンドの例を次に示します。

Stop-AzSqlDatabaseActivity -ResourceGroupName $ResourceGroupName -ServerName $ServerName -DatabaseName $DatabaseName -OperationId $Operation.OperationId

注意

エクスポート操作を取り消すには、次のいずれかのロールが必要です。

制限事項

  • この記事で説明する方法を使用して BACPAC ファイルを premium Storage Azureにエクスポートすることはサポートされていません。
  • ファイアウォールの背後にある Storage は現在サポートされていません。
  • 不変ストレージは現在サポートされていません。
  • Azure SQL Managed Instance では現在、Azure ポータルまたはAzure PowerShellを使用した BACPAC ファイルへのデータベースのエクスポートはサポートされていません。 マネージド インスタンスを BACPAC ファイルにエクスポートするには、SQL Server Management Studio (SSMS) または SQLPackage を使用します。
  • 現時点では、MFA が必要な場合、Import/Export サービスはMicrosoft Entra ID認証をサポートしていません。
  • Import\Export サービスは、SQL 認証とMicrosoft Entra IDのみをサポートします。 Import\Export は、Microsoft ID アプリケーションの登録と互換性がありません。