Allineamento Azure SQL DB

Lavorando con i servizi Azure SQL Server/Azure SQL DB e ambienti di DEV/QTY/PRD può capitare la necessità di allineare i dati e le struttura dei DB.

Ho provato due scenari di ripristino da un file BACPAC:

  • Portale Azure 
  • SqlPackage.exe
Per la mia esperienza consiglio l’utilizzo di SqlPackage.exe il motivo principale è che in questa maniera non dovrete:
  1. Dipendere da quanti utenti stanno eseguendo procedure di importazione DB nella vostra region.
  2. Se utilizzare, come spero, i servizi Firewall inclusi sugli azure sql server non avrete necessità di abilitare l’accesso da indirizzi IP “sconosciuti”
  3. Non avrete limiti di dimensione del DB che volete importare.
Come funziona l’importazione da Portale Azure? Qui la guida ufficiale
Prima di procedere è necessario prendere in considerazione questi aspetti:
  • Viene messa a disposizione una “Machine” (tutto automatico e trasparente per il sistemista) con al massimo 405GB. Ma per completare l’importazione sarà necessario 3 volte la dimensione del BACPAC che dovete importare. Quindi se la matematica non è un opinione la dimensione massima del file dovrà essere 150GB 
  • Può capitarvi un errore simile:
        è necessario abilitare sul firewall del Azure SQL Server di destinazione l’IP evidenziato 
  • Può succedere che per caricare un DB di dimensioni ridotte siano necessarie delle ore. Tenete conto che il processo di creazione dipende da quante richieste di importazione nella region sono state effettuate (non solo da voi ma da tutto il mondo), perchè la richiesta viene accodata e poi quando è il vostro turno (ma non è dato di sapere) verrà processata. Come indicato in questo link ufficiale. Se dopo 4 giorni non è stata processata la tua richiesta di import viene cancellata 
Per avviare l’importazione è necessario:
– Caricare il file bacpac su un container su Azure Storage Account 
– Accedere via portale all’azure SQL Server e selezionare la voce:

– Configurare i vari parametri 
– Lanciare l’importazione
Per monitorarla è possibile farlo Import/Export History 
Se vi collegate con SSMS al Azure SQL Server vedrete che il DB viene creato immediatamente, appena parte il job di importazione, ma poi il job rimane in pending e le tabelle e i dati non vengono popolati… il tutto rimane in attesa del proprio turno di importazione 
Come funziona l’importazione da SqlPackage.exe? Qui la guida ufficiale
Avete la necessità di:
  • Scaricare il SqlPackage  e installarlo 
  • Abilitare una VM  per l’accesso all’azure Sql Server (sempre il discorso del Firewall), ma in teoria una VM di Management dovreste già averla..
– Da powershell dovete utilizzare il seguente comando:
.SqlPackage.exe /a:Import /sf:<percorso-del-bcapac> /tsn:<Azure SQL Server> /tdn:<Nome del DB> /tu:<Account> /tp:<Password> /p:DatabaseEdition=<Standard/basic ecc> /p:DatabaseServiceObjective=<es. S2>
Il comando se il DB non esiste lo crea …
Al termine di entrambi i processi ricordatevi di:
– Eliminare le credenziali sql non necessarie
– Dare i permessi alle credenziali sql necessarie
-Sistemare i backup 
Allineamento Azure SQL DB

Modifica delle Firewall Rule su Azure SQL Server

ATTENZIONE:
“The PowerShell Azure Resource Manager module is still supported by Azure SQL Database, but all development is now for the Az.Sql module”

Per cui la prima cosa da fare è iniziare ad abbandonare Powershell Azure Resource Manager…. poi:

– Login al tenant dove sono allocati gli Azure SQL Server 

Login-AzAccount -Tenant <ID>

– Esportare le regole in CSV per poi creare i comandi in maniera rapida editando il file XLS 

Get-AzSqlServer | Get-AzSqlServerFirewallRule | Select-Object -Property ResourceGroupName,ServerName,StartIpAddress,EndIpAddress,FirewallRuleName | Export-Csv -Path C:tempAzureSQLServerFirewall.csv -NoTypeInformation

– Modificare le regole 

Rimuovere una regola 

Remove-AzSqlServerFirewallRule -ResourceGroupName <Name> -ServerName <Azure SQL Server> -FirewallRuleName <RuleName>

Aggiungere una regola 


New-AzSqlServerFirewallRule -ResourceGroupName <Name> -ServerName <Azure SQL Server> -FirewallRuleName <Rule Name> -StartIpAddress <IP> -EndIpAddress <IP>

Modifica delle Firewall Rule su Azure SQL Server

Migrare su Azure un SQL DB – From SQL Server to Azure SQL Server

Test utilizzando bacpac direttamente da SQL Studio, errore:
La creazione del bacpac fallisce, il motivo sembra essere la presenza degli utenti di dominio nelle security. Error SQL71627 SQL Server bacpac migrate to Azure SQL Server. “
Provo con il tool Data migration Assitant. Operazione completata con successo (non ha importato le utenze collegate ad AD)
*Attenzione sull’Azure Sql server il database di destinazione deve essere già presente.
  1. Si seleziona il sorgente
  2. Si seleziona il destinatario (Su azure)

  1. SI seleziona quali oggetti importare
  1. Si applica sull’Azure SQL DB  destinatario lo script di creazione
  2. Si seleziona le tabelle da importare
  1. Si da l’avvio all’importazione
 e si verifica l’esito:

Migrare su Azure un SQL DB – From SQL Server to Azure SQL Server

Azure SQL Database (PaaS) e creazione utenti

Durante l’implementazione del servizio Azure SQL Server (PaaS)  e dei relativi Azure Sql Database (PaaS) viene rischiesto di creare un utente amministratore del Azure SQL server e di conseguenza dei DB in esso ospitato.

Nell’eventualità di creare utenti specifici per i DB (come db_owner, solo lettura ecc.) la procedura è differente rispetto una installazione di Microsoft SQL server on-prem.

Di seguito i comandi T-SQL per la creazione di:
– Utente login su Azure SQL server
– Utente su DB
-Assegnazione permessi
– Verifica dei permessi

##Creazione Login 

CREATE LOGIN  <utente>
WITH PASSWORD = ‘<password> 
GO
###Creazione utente sul DB 
CREATE USER <utente>
FOR LOGIN <utente>
WITH DEFAULT_SCHEMA = dbo
GO
## Assegnazione del ruolo sul DB 
ALTER ROLE db_owner ADD MEMBER [<utente>];
###Verificare users e permessi

select @@ServerName [Server Name], DB_NAME() [DB Name], u.name [DB Role], u2.name [Member Name]
    from sys.database_role_members m
    join sys.database_principals u on m.role_principal_id = u.principal_id
    join sys.database_principals u2 on m.member_principal_id = u2.principal_id
    where u.name = ‘db_owner’
    order by [Member Name]
Azure SQL Database (PaaS) e creazione utenti

Azure VMware Solution (AVS)

Da alcuni mesi è disponibile nei site EAST US e WEST US il servizio Azure VMware Solution (AVS) in collaborazione con CloudSimple.

Il servizio permette di avere una infrastruttura VMware su cloud Azure. 
Alcune caratteristiche sono:
– La possibilità di gestire le VM dal vSphere Web Client senza dover cambiare la user experience  generata negli anni utilizzando gli strumenti di gestione di VMware.
– La possibilità di migrare le VM da on-prem to cloud
– La possibilità di gestire le VM dal portale Azure.
– La possibilità di integrare altri servizi Azure con le VM implementate su AVS (Ad esempio utilizzare l’Azure Application Gateway) 
Vi propongo questo video molto interessante un cui sono descritte alcune funzionalita:

Azure VMware Solution (AVS)

Copy Container da un Azure Container Registry (ACR) a un’altro

Necessario un client docker da utilizzare come ponte.

Nel mio caso ho utilizzato un client Ubuntu 18.04 con il componente docker installato.
Step 1 – Loggarsi al ACR sorgente
docker login –username <username ACR sorgente> — password <una delle due stringhe di connessione> <nome pubblico dell’ACR> 
Step 2 – Loggarsi al ACR Target
Comando precedente utilizzando le info dell’ACR Target
Step 3 – Scaricarsi le immagini
docker pull <nome dell’immagine>
Step 4 – Effettuare un re-TAG
docker tag <immagine ACR sorgente> <immagine ACR Taget>
Step 5 – Caricare le immagini
docker pull <immagine ACR Target>
Copy Container da un Azure Container Registry (ACR) a un’altro