Compartir a través de


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

Applies to: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 un almacenamiento local en una ubicación local y después se puede importar en Azure SQL Database, Azure SQL Managed Instance o en 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.

Importar o exportar una Base de Datos SQL de Azure mediante enlace privado está en versión preliminar.

El nombre de archivo 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 cómputo.

  • 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 un escaneo de tabla para exportar la tabla completa. Una buena manera de determinar si las tablas están optimizadas para la exportación es ejecutar y asegurarse de que no sea NULL y su valor tenga una buena distribución. Para obtener más información, consulte DBCC SHOW_STATISTICS (Transact-SQL).

  • 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 para las operaciones de copia de seguridad y restauración. Azure crea automáticamente copias de seguridad para cada base de datos de usuario. Para obtener más información, consulte visión general de continuidad del negocio y Copias de seguridad automatizadas en Azure SQL Database o Copias de seguridad automatizadas en Azure SQL Managed Instance.

Exportación desde el portal de Azure

  • Puede usar el portal de Azure para exportar un BACPAC de una base de datos en un servidor lógico Azure SQL Database.
  • Actualmente no se admite el uso del portal de Azure para exportar un BACPAC de una base de datos desde Azure SQL Managed Instance.

Nota:

Las máquinas que procesan solicitudes de importación y exportación enviadas a través del portal de Azure o PowerShell deben almacenar el archivo BACPAC y los archivos temporales generados por el marco de aplicaciones de Data-Tier (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, algunas solicitudes podrían fallar con un error. En este caso, la solución alternativa es ejecutar SqlPackage en un equipo con suficiente espacio en disco local. Use la utilidad SQLPackage para importar o exportar bases de datos de más de 150 GB para evitar este problema.

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

    Captura de pantalla que resalta el botón Exportar.

  2. Especifique el nombre de archivo BACPAC, seleccione una cuenta de almacenamiento y un contenedor de Azure existentes para la exportación y proporcione las credenciales adecuadas para acceder a la base de datos de origen. Aquí se necesita un inicio de sesión de administrador de SQL Server incluso si es el administrador de Azure, ya que ser administrador de Azure no equivale a tener permisos de administrador en Azure SQL Database o Azure SQL Managed Instance.

    Captura de pantalla que muestra la página Exportar base de datos con el nombre de usuario y la contraseña especificados.

  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.

Exportación con autenticación de identidad administrada (versión preliminar)

Puede exportar una base de datos en Azure SQL Database a un archivo BACPAC mediante managed identity autenticación para eliminar la necesidad de proporcionar contraseñas de administrador de SQL o claves de acceso de almacenamiento.

Para obtener un tutorial detallado, consulte Uso de identidad administrada con importación y exportación (versión preliminar).

Para exportar un archivo BACPAC mediante la autenticación de identidad administrada, se requiere la siguiente configuración:

  • Una identidad de usuario asignada administrada (UAMI) asignada al servidor lógico para Azure SQL Database.
  • El servidor tiene la identidad administrada configurada como administrador de Microsoft Entra.
  • Se asigna una identidad administrada al rol Storage Blob Data Contributor en la cuenta de Azure Storage de destino. Esta identidad administrada puede ser la misma que la asignada al servidor o una diferente.
  • El servidor lógico, la identidad administrada y la cuenta de almacenamiento se encuentran en el mismo inquilino de Microsoft Entra.

Nota:

La exportación con autenticación de identidad administrada se encuentra actualmente en preview y solo está disponible para Azure SQL Database.

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.

En este ejemplo se muestra cómo exportar una base de datos mediante SqlPackage con Active Directory autenticación universal:

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

La extensión MSSQL para Visual Studio Code es una extensión gratuita y de código abierto disponible para Windows, macOS y Linux. La extensión incluye la experiencia aplicación de capa de datos (versión preliminar) para las operaciones sqlPackage, incluida la exportación e importación. Para obtener más información sobre cómo instalar y usar la extensión, consulte la extensión MSSQL para Visual Studio Code.

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 BACPAC de una base de datos desde Azure SQL Managed Instance mediante PowerShell. Consulte Consideraciones.

Use el cmdlet New-AzSqlDatabaseExport para enviar una solicitud de exportación de 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: Completado, la exportación ha finalizado.

$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, debe tener uno de los siguientes roles:

  • El rol Colaborador de base de datos SQL o
  • Un rol personalizado de Azure RBAC con permiso Microsoft.Sql/servers/databases/operations

Limitaciones

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