Azure SQL データベースを BACPAC ファイルにエクスポートするExport an Azure SQL database to a BACPAC file

アーカイブのため、または別のプラットフォームに移行するためにデータベースをエクスポートする必要がある際は、データベース スキーマとデータを BACPAC ファイルにエクスポートできます。When you need to export a database for archiving or for moving to another platform, you can export the database schema and data to a BACPAC file. BACPAC ファイルは、メタデータと SQL Server データベースからのデータを含み、BACPAC の拡張子を持つ ZIP ファイルです。A BACPAC file is a ZIP file with an extension of BACPAC containing the metadata and data from a SQL Server database. BACPAC ファイルは、Azure Blob Storage またはオンプレミスの場所にあるローカル ストレージに格納でき、後で Azure SQL Database またはオンプレミス インストールの SQL Server にインポートすることができます。A BACPAC file can be stored in Azure Blob storage or in local storage in an on-premises location and later imported back into Azure SQL Database or into a SQL Server on-premises installation.

Azure SQL データベースをエクスポートする際の考慮事項Considerations when exporting an Azure SQL database

  • エクスポートにトランザクション一貫性を持たせるために、書き込みアクティビティがエクスポート中に行われないようにするか、Azure SQL データベースのトランザクション一貫性のあるコピーからエクスポートする必要があります。For an export to be transactionally consistent, you must ensure either that no write activity is occurring during the export, or that you are exporting from a transactionally consistent copy of your Azure SQL database.

  • Blob Storage にエクスポートする場合、BACPAC ファイルの最大サイズは 200 GB です。If you are exporting to blob storage, the maximum size of a BACPAC file is 200 GB. 大きな BACPAC ファイルをアーカイブするには、ローカル ストレージにエクスポートします。To archive a larger BACPAC file, export to local storage.

  • この記事で説明されている方法を用いた Azure Premium Storage への BACPAC ファイルのエクスポートはサポートされていません。Exporting a BACPAC file to Azure premium storage using the methods discussed in this article is not supported.

  • ファイアウォールの背後にある Storage は現在サポートされていません。Storage behind a firewall is currently not supported.

  • Azure SQL Database からのエクスポート操作が 20 時間を超える場合は、操作が取り消されることがあります。If the export operation from Azure SQL Database exceeds 20 hours, it may be canceled. エクスポート中にパフォーマンスを向上させるには、次の操作を実行します。To increase performance during export, you can:

    • コンピューティング サイズを一時的に増やします。Temporarily increase your compute size.
    • エクスポート中のすべての読み取りアクティビティと書き込みアクティビティを中止する。Cease all read and write activity during the export.
    • すべての大きなテーブルに null 以外の値を持つ クラスター化インデックス を使用する。Use a clustered index with non-null values on all large tables. クラスター化インデックスがないと、エクスポートが 6 ~ 12 時間よりも時間が長くかかる場合には失敗することがあります。Without clustered indexes, an export may fail if it takes longer than 6-12 hours. これは、エクスポート サービスがテーブル スキャンを実行してテーブル全体をエクスポートしようとする必要があることが原因です。This is because the export service needs to complete a table scan to try to export entire table. テーブルがエクスポート向けに最適化されているかを判断するための適切な方法として、DBCC SHOW_STATISTICS を実行し、RANGE_HI_KEY が null 以外の値であり、分布が適切であることを確認する方法があります。A good way to determine if your tables are optimized for export is to run DBCC SHOW_STATISTICS and make sure that the RANGE_HI_KEY is not null and its value has good distribution. 詳細については、「DBCC SHOW_STATISTICS」を参照してください。For details, see DBCC SHOW_STATISTICS.

注意

BACPAC はバックアップおよび復元操作に使用するためのものでありません。BACPACs are not intended to be used for backup and restore operations. Azure SQL Database では、すべてのユーザー データベースのバックアップが自動的に作成されます。Azure SQL Database automatically creates backups for every user database. 詳しくは、ビジネス継続性の概要に関するページと、SQL Database のバックアップに関するページをご覧ください。For details, see business continuity overview and SQL Database backups.

Azure Portal を使用して BACPAC ファイルにエクスポートするExport to a BACPAC file using the Azure portal

現在のところ、Azure PowerShell を使用してマネージド インスタンスからデータベースの BACPAC をエクスポートすることはサポートされていません。Exporting a BACPAC of a database from a managed instance using Azure PowerShell is not currently supported. 代わりに、SQL Server Management Studio または SQLPackage を使用してください。Use SQL Server Management Studio or SQLPackage instead.

注意

Azure portal または PowerShell から送信されたインポート/エクスポート要求を処理するマシンは、BACPAC ファイルとデータ層アプリケーション フレームワーク (DacFX) によって生成された一時ファイルを格納する必要があります。Machines processing import/export requests submitted through the Azure portal or PowerShell need to store the BACPAC file as well as temporary files generated by the Data-Tier Application Framework (DacFX). 必要なディスク領域は、同じサイズのデータベースでも大きく異なります。データベースのサイズの最大 3 倍のディスク領域が必要になることがあります。The disk space required varies significantly among databases with the same size and can require disk space up to 3 times the size of the database. インポート/エクスポート要求のみを実行するマシンには、450 GB のローカル ディスク領域があります。Machines running the import/export request only have 450GB local disk space. その結果、一部の要求がエラー There is not enough space on the disk で失敗することがあります。As a result, some requests may fail with the error There is not enough space on the disk. この場合の回避策は、十分なローカル ディスク領域を持つマシンで sqlpackage.exe を実行することです。In this case, the workaround is to run sqlpackage.exe on a machine with enough local disk space. 150 GB を超えるデータベースをインポート/エクスポートする場合は、SqlPackage を使用してこの問題を回避することをお勧めします。We encourage using SqlPackage to import/export databases larger than 150GB to avoid this issue.

  1. Azure Portal を使用してデータベースをエクスポートするには、データベースのページを開き、ツールバーの [エクスポート] をクリックします。To export a database using the Azure portal, open the page for your database and click Export on the toolbar.

    データベースのエクスポート

  2. BACPAC ファイル名を指定し、エクスポートに使用する既存の Azure ストレージ アカウントとコンテナーを選択した後、ソース データベースにアクセスするための適切な資格情報を指定します。Specify the BACPAC filename, select an existing Azure storage account and container for the export, and then provide the appropriate credentials for access to the source database. ここでは、Azure 管理者であっても SQL サーバー管理者ログインが必要になります。Azure 管理者であることは、SQL サーバー管理者のアクセス許可を持っていることと同じではないためです。A SQL Server admin login is needed here even if you are the Azure admin, as being an Azure admin does not equate to having SQL Server admin permissions.

    データベースのエクスポート

  3. Click OK.Click OK.

  4. エクスポート操作の進行状況を監視するには、エクスポートされたデータベースを含む SQL Database サーバーのページを開きます。To monitor the progress of the export operation, open the page for the SQL Database server containing the database being exported. [設定] の下で、 [インポート/エクスポート履歴] をクリックします。Under to Settings and then click Import/Export history.

    エクスポート履歴

SQLPackage ユーティリティを使用して BACPAC ファイルにエクスポートするExport to a BACPAC file using the SQLPackage utility

SqlPackage コマンドライン ユーティリティを使用して SQL データベースをエクスポートするには、「エクスポートのパラメーターおよびプロパティ」を参照してください。To export a SQL database using the SqlPackage command-line utility, see Export parameters and properties. SQL Package ユーティリティは、最新バージョンの SQL Server Management Studio および SQL Server Data Tools for Visual Studio に付属しています。また、Microsoft ダウンロード センターから最新バージョンの SqlPackage を直接ダウンロードすることもできます。The SQLPackage utility ships with the latest versions of SQL Server Management Studio and SQL Server Data Tools for Visual Studio, or you can download the latest version of SqlPackage directly from the Microsoft download center.

ほとんどの運用環境では、スケールとパフォーマンスのために、SQLPackage ユーティリティの使用をお勧めします。We recommend the use of the SQLPackage utility for scale and performance in most production environments. BACPAC ファイルを使用した移行に関する SQL Server Customer Advisory Team のブログについては、「Migrating from SQL Server to Azure SQL Database using BACPAC Files (BACPAC ファイルを使用した SQL Server から Azure SQL Database への移行)」を参照してください。For a SQL Server Customer Advisory Team blog about migrating using BACPAC files, see Migrating from SQL Server to Azure SQL Database using BACPAC Files.

この例では、SqlPackage.exe と Active Directory ユニバーサル認証を使用してデータベースをエクスポートする方法を示します。This example shows how to export a database using SqlPackage.exe with Active Directory Universal Authentication:

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

SQL Server Management Studio (SSMS) を使用して BACPAC ファイルにエクスポートするExport to a BACPAC file using SQL Server Management Studio (SSMS)

最新バージョンの SQL Server Management Studio では、Azure SQL データベースを BACPAC ファイルにエクスポートするためのウィザードが提供されています。The newest versions of SQL Server Management Studio provides a wizard to export an Azure SQL database to a BACPAC file. 「データ層アプリケーションのエクスポート」を参照してください。See the Export a Data-tier Application.

PowerShell を使用して BACPAC ファイルにエクスポートするExport to a BACPAC file using PowerShell

注意

マネージド インスタンスでは現在、Azure PowerShell を使用して BACPAC ファイルにデータベースをエクスポートすることはサポートされていません。A managed instance does not currently support exporting a database to a BACPAC file using Azure PowerShell. マネージド インスタンスを BACPAC ファイルにエクスポートするには、SQL Server Management Studio または SQLPackage を使用します。To export a managed instance into a BACPAC file, use SQL Server Management Studio or SQLPackage.

New-AzSqlDatabaseExport コマンドレットを使用して、Azure SQL Database サービスにデータベース エクスポート要求を送信します。Use the New-AzSqlDatabaseExport cmdlet to submit an export database request to the Azure SQL Database service. データベースのサイズに応じて、エクスポート操作の完了に時間がかかる場合があります。Depending on the size of your database, the export operation may take some time to complete.

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

エクスポート要求の状態を確認するには、Get-AzSqlDatabaseImportExportStatus コマンドレットを使用します。To check the status of the export request, use the Get-AzSqlDatabaseImportExportStatus cmdlet. 要求直後にこれを実行すると、通常は、Status : InProgress が返されます。Running this immediately after the request usually returns Status: InProgress. Status:Succeeded が表示された場合、エクスポートは完了しています。When you see Status: Succeeded the export is complete.

$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

次の手順Next steps