Inicio rápido: Importación de un archivo BACPAC a una base de datos de Azure SQL Database o Instancia administrada de Azure SQL

SE APLICA A: Azure SQL Database Azure SQL Managed Instance

Puede importar una base de datos de SQL Server en Azure SQL Database o Instancia administrada de SQL 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

El nivel de compatibilidad de la base de datos importada se basa en el nivel de compatibilidad de la base de datos de origen.

Importante

Después de importar la base de datos, puede elegir usar la base de datos en el nivel de compatibilidad actual (nivel 100 para la base de datos AdventureWorks2008R2) 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 los valores de nivel de base de datos adicionales relacionados con los niveles de compatibilidad.

Uso de Azure Portal

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

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.

Para migrar una base de datos a una Instancia administrada de Azure SQL 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.exe 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.

    Base de datos import1

  2. Seleccione la cuenta de almacenamiento y el contenedor para el archivo BACPAC y 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.

    Base de datos import2

  4. Haga clic en OK.

  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.

    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. SQL Server Management Studio y SQL Server Data Tools para Visual Studio. También puede descargar la versión más reciente de SqlPackage desde el Centro de descarga de Microsoft.

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 llamada myMigratedDatabase con un nivel de servicio Premium y un objetivo de servicio P6. Cambie estos valores según corresponda para su entorno.

sqlpackage.exe /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.

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

sqlpackage.exe /a:Import /sf:testExport.bacpac /tdn:NewDacFX /tsn:apptestserver.database.windows.net /ua:True /tid:"apptest.onmicrosoft.com"

Usar PowerShell

Nota

Instancia administrada de SQL 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 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 3 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.exe 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 "Standard" -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 de cancelación de las operaciones de base de datos o el comando Stop-AzSqlDatabaseActivityde PowerShell; aquí encontrará un ejemplo de comando de PowerShell.

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

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.exe desde una máquina virtual de Azure o la realización de 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 BACPAC en esta base de datos vacía.

Nota

La redundancia del almacenamiento de copia de seguridad configurable de Azure SQL Database solo está disponible actualmente como versión preliminar pública en la región Sudeste de Asia de Azure.

Importación mediante asistentes

También puede usar estos asistentes.

Pasos siguientes