Inicio rápido: Importación de un archivo bacpac a una base de datos de Azure SQL Database o Azure SQL Managed Instance

Se aplica a: Azure SQL Database Azure SQL Managed Instance

Puede importar una base de datos de SQL Server en Azure SQL Database o SQL Managed Instance mediante un archivo .bacpac. Puede importar los datos de un archivo bacpac almacenado en Azure Blob Storage (solo almacenamiento estándar) o desde el almacenamiento local en una ubicación local. Para maximizar la velocidad de importación al proporcionar más recursos y más rápidos, escale la base de datos a un nivel de servicio más alto y calcule el tamaño de proceso durante la importación. A continuación, puede reducir verticalmente cuando la importación se lleve a cabo de forma correcta.

Nota:

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

Usar Azure Portal

Vea este vídeo para ver cómo importar desde un archivo bacpac en Azure Portal o siga leyendo:

Azure Portalsolo admite la creación de una base de datos única en Azure SQL Database y solo desde un archivo BACPAC almacenado en Azure Blob Storage.

Advertencia

Los archivos Bacpac de más de 4 GB generados a partir de SqlPackage pueden no importarse desde Azure Portal o Azure PowerShell con un mensaje de error que indica File contains corrupted data.. Este es el resultado de un problema conocido y la solución alternativa consiste en utilizar la SqlPackage utilidad de línea de comandos para importar el archivo bacpac. Para obtener más información, consulte SqlPackage y el registro de problemas.

Para migrar una base de datos a una instancia de Azure SQL Managed Instance a partir de un archivo bacpac, use SQL Server Management Studio o SQLPackage. Actualmente no se admite el uso de Azure Portal o Azure PowerShell.

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 importar a partir de un archivo bacpac en una nueva base de datos única mediante Azure Portal, abra la página del servidor que corresponda y, en la barra de herramientas, seleccione Importar base de datos.

    Captura de pantalla de la página de información general del servidor lógico en Azure Portal, con la importación de base de datos seleccionada.

  2. Seleccione Seleccionar copia de seguridad. Elija la cuenta de almacenamiento que hospeda la base de datos y, después, seleccione el archivo bacpac desde el que se va a importar.

  3. Especifique el tamaño de la nueva base de datos (por lo general, el mismo que el origen) y proporcione las credenciales del servidor SQL Server de destino. Para obtener una lista de valores posibles para una nueva base de datos de Azure SQL Database, vea Creación de una base de datos.

    Captura de pantalla de la página Importación de base de datos en Azure Portal.

  4. Seleccione Aceptar.

  5. Para supervisar el progreso de una importación, abra la página del servidor de la base de datos y, en Configuración, seleccione Historial de importación y exportación. Cuando se realiza correctamente, la importación tiene el estado Completada.

    Captura de pantalla de la página de información general del servidor en Azure Portal, en la que se muestra el estado de importación de la base de datos.

  6. Para comprobar que la base de datos está activa en el servidor, seleccione Bases de datos SQL y compruebe que la base de datos nueva está En línea.

Uso de SqlPackage

Para importar una base de datos de SQL Server mediante la utilidad de línea de comandos SqlPackage, consulte Parámetros y propiedades de la importación. Puede descargar la versión más reciente de SqlPackage para Windows, macOS o Linux.

Para el escalado y rendimiento, se recomienda usar SqlPackage en la mayoría de los entornos de producción en lugar de usar Azure Portal. Consulte cómo migrar de SQL Server a Azure SQL Database con archivos BACPAC en el blog de Customer Advisory Team de SQL Server sobre cómo migrar usuarios con archivos BACPAC.

El modelo de aprovisionamiento basado en DTU admite la selección de valores de tamaño máximo de base de datos para cada nivel. Al importar una base de datos use uno de estos valores admitidos.

El comando SqlPackage siguiente importa la base de datos AdventureWorks2008R2 desde el almacenamiento local a un servidor SQL lógico denominado mynewserver20170403. Crea una base de datos denominada myMigratedDatabase con un nivel de servicio Premium y un objetivo de servicio P6. Cambie estos valores según corresponda para su entorno.

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

Importante

Para conectarse a Azure SQL Database desde detrás de un firewall corporativo, el firewall debe tener abierto el puerto 1433. Para conectarse a Instancia administrada de SQL, debe tener una conexión de punto a sitio o una conexión de ExpressRoute.

Como alternativa al nombre de usuario y la contraseña, puede usar Microsoft Entra ID (anteriormente Azure Active Directory). Actualmente, el servicio Import/Export no admite la autenticación de Microsoft Entra ID cuando se requiere MFA. Sustituya los parámetros de nombre de usuario y contraseña por /ua:true y /tid:"yourdomain.onmicrosoft.com". En este ejemplo se muestra cómo importar una base de datos mediante SqlPackage con la autenticación de Microsoft Entra:

SqlPackage /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /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, macOS 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 la documentación de la extensión dacpac de SQL Server.

Uso de PowerShell

Nota:

Azure SQL Managed Instance no admite actualmente la migración de una base de datos a una base de datos de instancia desde un archivo bacpac mediante Azure PowerShell. Para importar en una instancia administrada de SQL, use SQL Server Management Studio o SQLPackage.

Nota:

Los equipos que procesan las solicitudes de importación o exportación que se envían a través del 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 tardar 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, en algunas solicitudes se puede producir el error "No hay suficiente espacio en el disco". En este caso, la solución alternativa es ejecutar SqlPackage en un equipo con suficiente espacio en disco local. Al importar o exportar bases de datos superiores a 150 GB, use SqlPackage para evitar este problema.

Importante

El módulo de Azure Resource Manager (RM) para PowerShell todavía es compatible, pero todo el desarrollo futuro se realizará para el módulo Az.Sql. El módulo de AzureRM continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo. Los argumentos para los comandos del módulo Az y los módulos AzureRm son esencialmente idénticos. Para obtener más información sobre la compatibilidad, vea Presentación del nuevo módulo Az de Azure PowerShell.

Use el cmdlet New-AzSqlDatabaseImport para enviar una solicitud de importación de base de datos a Azure. En función del tamaño de la base de datos, la importación puede tardar en completarse. El modelo de aprovisionamiento basado en DTU admite la selección de valores de tamaño máximo de base de datos para cada nivel. Al importar una base de datos use uno de estos valores admitidos.

$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)

Puede usar el cmdlet Get-AzSqlDatabaseImportExportStatus para comprobar el progreso de la importación. Si el cmdlet se ejecuta inmediatamente después de la solicitud, por lo general devuelve Status: InProgress: La importación se completa cuando se ve Status: Succeeded.

$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

Sugerencia

Para ver otro ejemplo de script, consulte Importación de una base de datos desde un archivo BACPAC.

Cancelación de la solicitud de importación

Use la API Database Operations - Cancel o el comando Stop-AzSqlDatabaseActivity de PowerShell, como en el ejemplo siguiente:

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

Permisos requeridos para cancelar la importación

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

Nivel de compatibilidad de la nueva base de datos

  • El nivel de compatibilidad de la base de datos importada se basa en el nivel de compatibilidad de la base de datos de origen.
  • Después de importar la base de datos, puede elegir usar la base de datos en el nivel de compatibilidad actual o en un nivel superior. Para más información acerca de las implicaciones y las opciones para la utilización de una base de datos en un nivel de compatibilidad específico, consulte ALTER DATABASE (Transact-SQL) Compatibility Level [Nivel de compatibilidad de ALTER DATABASE (Transact-SQL)]. Vea también ALTER DATABASE SCOPED CONFIGURATION para obtener información sobre otros valores de nivel de base de datos relacionados con los niveles de compatibilidad.

Limitaciones

  • No se admite la importación a una base de datos que esté en un grupo elástico. Puede importar los datos en una base de datos única y después moverla a un grupo elástico.
  • El servicio de importación y exportación no funciona cuando "Permitir el acceso a servicios de Azure" se establece en "DESACTIVADO". Sin embargo, puede solucionar el problema con la ejecución manual de SqlPackage desde una máquina virtual de Azure o realizando la exportación directamente en el código mediante la API de DacFx.
  • La importación no admite la especificación de una redundancia del almacenamiento de copia de seguridad al crear una nueva base de datos y se crea con la redundancia predeterminada del almacenamiento de copia de seguridad con redundancia geográfica. Para solucionar el problema, cree primero una base de datos vacía con la redundancia deseada del almacenamiento de copia de seguridad mediante Azure Portal o PowerShell y, a continuación, importe el archivo bacpac en esta base de datos vacía.
  • El almacenamiento detrás de un firewall actualmente no se admite.
  • Durante el proceso de importación, no cree una base de datos con el mismo nombre. El proceso de importación crea una nueva base de datos el nombre especificado.
  • 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.

Herramientas adicionales

También puede usar estos asistentes.