Categorias
Azure SQL Database How To Virtual PASS BR

Azure SQL Database – Migration tools – part 2

[bing_translator]

Existem algumas ferramentas que ajudam a migrar seu database para o Azure SQL Database e eu já falei de algumas:

Export e Import manualmente

Mais uma vez o SQL Server Management Studio (SSMS) é a ferramenta que pode ser usada através do Export Data-tier Application.
Esse processo tem algumas diferenças quando comparado com o Migration Wizard

  • Suporta qualquer database a partir da versão SQL Server 2005
  • Excelente para database de tamanho pequeno, médio ou grande
  • .bacpad pode ser armazenado no Azure Storage ou localmente
  • Processo em múltiplos passos independentes
  • Maior controle sobre o export e import
  • Downtime é grande

Não esquece de validar se seu database está pronto para o Azure SQL Database através do Data Migration Assistant – Assessment

Para iniciar o seu processo de migração acesse o wizard através do SSMS.

Acesse Object Explorer –> Instance –> Database –> Botão direito –> Task –> Export Data-tier Application. Uma primeira janela de introdução será mostrada, avance para a próxima.

Nesse ponto você pode escolher entre salvar o .bacpac localmente ou no Azure Storage Account

  1.  Connect a sua storage account
  2. Indique o container onde o arquivo bacpac deverá ficar
  3. Nome do arquivo
  4. Um caminho local temporário deve ser indicado para que o processo tenha sucesso

Revise as informações, principalmente o espaço temporário disponível, e inicie a exportação do database. Através da janela de progresso podemos verificar o que o wizard está fazendo.

  1. Extrai o schema
  2. Valida o schema
  3. Exporta os dados (tabela por tabela)
  4. Upload do arquivo bacpac para o Azure Storage

Uma vez que o wizard terminou com sucesso não existe mais nada para fazer no SSMS e agora você tem o controle de quando e onde realizar o import. Acesse o Azure Portal e navegue até o seu servidor logico do SQL servers.

Acesse o item Overview e a opção Import database

 

 

  1. Indique sua subscription
  2. Local onde você fez o upload do arquivo bacpac

  1. Defina o service tier do database
  2. Escolha um nome para o database
  3. Collation que deseja utilizar
  4. Método de autenticação
  5. Login do administrador do servidor logico

 

 

 

 

Após revisar as informações e confirmar, o deploy deverá iniciar e uma notificação será apresentada no portal. Uma vez que sua requisição tenha sido completada seu database estará disponível para uso. Você pode verificar através do SSMS ou do Azure Portal.

O tempo total de deploy depende de alguns fatores como tamanho do seu database e service tier escolhido. Outra possibilidade é utilizar powershell para fazer o import do bacpac ao invés de usar o portal do Azure.

O código abaixo é um exemplo estático de como utilizar powershell.

#region connect to Azure
Login-AzureRmAccount
Get-AzureRmSubscription 
Select-AzureRmSubscription -SubscriptionName 'MSDN Platforms'

#list of commands 
Get-Command -Module AzureRM.Sql
#endregion

#region getting information and set variables

# Get the resource group name 
Get-AzureRmResourceGroup 
$resourcegroupname = "SQL-Database"

# Set an admin login and password for your server
$adminlogin = "admin"
$password = "yourpassword"

# Get server name - the logical server name has to be unique in the system
Get-AzureRmSqlServer -ResourceGroupName $resourcegroupname #| Select ServerName
$servername = "balabuchsqldb"

# The sample database name
$databasename = "AdventureWorks_Bacpac_PS"

# The storage account name and storage container name
Get-AzureRmStorageAccount -ResourceGroupName $resourcegroupname #| Select StorageAccountName
$storageaccountname = "sqldatabasemigration"

Get-AzureRmStorageAccount -ResourceGroupName $resourcegroupname | Get-AzureStorageContainer #| Select Name
$storagecontainername = "migration"

# BACPAC file name
Get-AzureRmStorageAccount -ResourceGroupName $resourcegroupname | Get-AzureStorageBlob -Container $storagecontainername #| Select Name
$bacpacfilename = "AdventureWorks.bacpac"

#endregion


#region importing bacpac

# Import bacpac to database with an S3 performance level
$importRequest = New-AzureRmSqlDatabaseImport -ResourceGroupName $resourcegroupname `
    -ServerName $servername `
    -DatabaseName $databasename `
    -AdministratorLogin $adminlogin `
    -AdministratorLoginPassword  (ConvertTo-SecureString -String $password -AsPlainText -Force)`
    -DatabaseMaxSizeBytes "5000000" `
    -StorageKeyType "StorageAccessKey" `
    -StorageKey (Get-AzureRmStorageAccountKey -ResourceGroupName $resourcegroupname -StorageAccountName $storageaccountname).Value[0] `
    -StorageUri "https://$storageaccountname.blob.core.windows.net/$storagecontainername/$bacpacfilename" `
    -Edition "Standard" `
    -ServiceObjectiveName "S3"


# Check import status and wait for the import to complete
$importStatus = Get-AzureRmSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
[Console]::Write("Importing")
while ($importStatus.Status -eq "InProgress")
{
    $importStatus = Get-AzureRmSqlDatabaseImportExportStatus -OperationStatusLink $importRequest.OperationStatusLink
    [Console]::Write(".")
    Start-Sleep -s 10
}
[Console]::WriteLine("")
$importStatus

#endregion

#region scale down database

# Scale down to Basic after import is completed
Set-AzureRmSqlDatabase -ResourceGroupName $resourcegroupname `
    -ServerName $servername `
    -DatabaseName $databasename  `
    -Edition "Basic" `
    -RequestedServiceObjectiveName "Basic"

#endregion

Referências:

https://docs.microsoft.com/en-us/azure/sql-database/scripts/sql-database-import-from-bacpac-powershell

https://docs.microsoft.com/en-us/azure/sql-database/sql-database-import