Exportación a un archivo BACPAC: Azure SQL Database y Azure SQL Managed Instance

Se aplica a:Azure SQL DatabaseAzure SQL Managed Instance

Cuando necesite exportar una base de datos para archivar o migrar a otra plataforma, puede exportar el esquema de base de datos y los datos a un archivo BACPAC. Un archivo BACPAC es un archivo ZIP con una extensión de BACPAC que contiene los metadatos y los datos de la base de datos. Un archivo BACPAC se puede almacenar en Azure Blob Storage o en una ubicación local y, luego, volver a importarse en Azure SQL Database, Azure SQL Managed Instance o una instancia de SQL Server.

Consideraciones

  • Para que una exportación sea transaccionalmente coherente, debe asegurarse de que no haya ninguna actividad de escritura durante la exportación, o bien de exportar desde una copia transaccionalmente coherente de la base de datos.

  • Si va a exportar a Blob Storage, el tamaño máximo de un archivo BACPAC es 200 GB. Para archivar un archivo BACPAC de mayor tamaño, exporte al almacenamiento local con SqlPackage.

  • El nombre de archivo de Azure Storage no puede terminar con . y no puede contener caracteres especiales como un carácter de espacio o <, >, *, %, &, :, \, /, ?. El nombre de archivo debe tener menos de 128 caracteres.

  • Si la operación de exportación tarda más de 20 horas, es posible que se cancele. Para aumentar el rendimiento durante la exportación, puede hacer lo siguiente:

    • Aumentar temporalmente el tamaño de proceso.
    • Detener toda actividad de lectura y escritura durante la exportación.
    • Use un índice agrupado con valores distintos de NULL en todas las tablas de gran tamaño. Sin índices agrupados, la exportación podría no producirse si tarda más de 6-12 horas. Esto se debe a que el servicio de exportación necesita completar el recorrido de tabla para tratar de exportar toda la tabla. Una buena forma de determinar si las tablas están optimizadas para la exportación es ejecutar DBCC SHOW_STATISTICS y asegurarse de que RANGE_HI_KEY no es NULL y su valor tiene buena distribución. Para obtener más información, consulte DBCC SHOW_STATISTICS.
  • En el caso de las bases de datos de mayor tamaño, la importación y exportación de BACPAC puede tardar mucho tiempo y producir errores por diversos motivos.

Nota:

Los BACPAC no están diseñados para usarse en operaciones de copia de seguridad y restauración. Azure crea automáticamente copias de seguridad para todas las bases de datos de usuario. Para más información, consulte Información general sobre la continuidad empresarial y Copias de seguridad automatizadas en Azure SQL Database o Copias de seguridad automatizadas en Azure SQL Managed Instance.

Nota:

Importación y exportación mediante Private Link está en versión preliminar.

El Portal de Azure

Actualmente, no se admite la exportación de un archivo BACPAC de una base de datos desde Azure SQL Managed Instance mediante Azure Portal. Consulte Consideraciones.

Nota:

Los equipos que procesan las solicitudes de importación o exportación que se envían a través de Azure Portal o PowerShell deben almacenar el archivo BACPAC, así como los archivos temporales generados por Data-Tier Application Framework (DacFX). El espacio en disco necesario varía considerablemente entre las bases de datos del mismo tamaño y puede requerir un espacio en disco de hasta tres veces el tamaño de la base de datos. Los equipos que ejecutan la solicitud de importación o exportación solo tienen 450 GB de espacio en disco local. Como resultado, puede que es produzca el error There is not enough space on the disk en algunas solicitudes. En este caso, la solución alternativa es ejecutar SqlPackage en un equipo con suficiente espacio en disco local. Se recomienda usar SQLPackage para importar o exportar bases de datos superiores a 150 GB para evitar este problema.

  1. Para exportar una base de datos mediante Azure Portal, abra la página de la base de datos y seleccione Exportar en la barra de herramientas.

    Screenshot that highlights the Export button.

  2. Especifique el nombre de archivo BACPAC, seleccione una cuenta de Azure Storage existente y el contenedor para la exportación, y escriba las credenciales correspondientes para acceder a la base de datos de origen. Se necesita un inicio de sesión de administrador de SQL aunque sea administrador de Azure, ya que serlo no implica tener permisos de administrador en Azure SQL Database o Instancia administrada de Azure SQL.

    Screenshot shows the Export Database page with username and password specified.

  3. Seleccione Aceptar.

  4. Para supervisar el progreso de la operación de exportación, abra la página del servidor que contiene la base de datos que se va a exportar. En Administración de datos, seleccione Historial de importación y exportación.

Utilidad de SQLPackage

Se recomienda usar la utilidad SQLPackage para la escala y el rendimiento en la mayoría de los entornos de producción. Puede ejecutar varios comandos SqlPackage en paralelo para subconjuntos de tablas a fin de acelerar las operaciones de importación y exportación.

Para exportar una base de datos en SQL Database mediante la utilidad de línea de comandos SQLPackage, consulte Parámetros y propiedades de la exportación. La utilidad SQLPackage está disponible para Windows, macOS y Linux.

Este ejemplo muestra cómo exportar una base de datos con SqlPackage con Autenticación universal de Active Directory:

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

Azure Data Studio

Azure Data Studio es una herramienta gratuita de código abierto y está disponible para Windows, Mac y Linux. La extensión "SQL Server dacpac" proporciona una interfaz de asistente para las operaciones sqlPackage, incluida la exportación e importación. Para obtener más información sobre la instalación y el uso de la extensión, consulte extensión dacpac de SQL Server.

SQL Server Management Studio (SSMS)

SQL Server Management Studio proporciona un asistente para exportar una base de datos en Azure SQL Database o una base de datos de SQL Managed Instance a un archivo BACPAC. Consulte Export a Data-tier Application (Exportación de una aplicación de la capa de datos).

PowerShell

No se admite la exportación de un archivo BACPAC de una base de datos de Azure SQL Managed Instance mediante PowerShell. Consulte Consideraciones.

Use el cmdlet New-AzSqlDatabaseExport para enviar una solicitud de exportación base de datos al servicio Azure SQL Database. Según el tamaño de la base de datos, la operación de exportación puede tardar algún tiempo en completarse.

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

Para comprobar el estado de la solicitud de exportación, utilice el cmdlet Get-AzSqlDatabaseImportExportStatus. Si se ejecuta este cmdlet inmediatamente después de la solicitud, normalmente devuelve Status: InProgress. Cuando vea Estado: Correcto, la exportación se ha terminado.

$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

Cancelación de la solicitud de exportación

Use la API de cancelación de las operaciones de base de datos o el comando Stop-AzSqlDatabaseActivity de PowerShell para cancelar una solicitud de exportación. Este es un ejemplo de comando de PowerShell:

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

Nota:

Para cancelar la operación de exportación, deberá tener uno de los siguientes roles:

Limitaciones

  • No se admite la exportación de un archivo BACPAC en Azure Premium Storage con los métodos que se describen en este artículo.
  • El almacenamiento detrás de un firewall actualmente no se admite.
  • El almacenamiento inmutable actualmente no se admite.
  • En la actualidad, Azure SQL Managed Instance no admite la exportación de una base de datos a un archivo BACPAC mediante Azure Portal o Azure PowerShell. Para exportar una instancia administrada a un archivo BACPAC, utilice SQL Server Management Studio (SSMS) o SQLPackage.
  • Actualmente, el servicio Import/Export no admite la autenticación de Microsoft Entra ID cuando se requiere MFA.
  • Los servicios Import\Export solo admiten la autenticación de SQL y Microsoft Entra ID. Import\Export no es compatible con el registro de aplicaciones de Microsoft Identity.