Azure SQL server – Database copy

Alla fine del 2019 ho postato nel Blog alcune indicazioni come effettaure un allineamento di un Azure SQL DB da un ambiente di Sviluppo a un ambiente di Produzione, a quel tempo (si sembra passato molto tempo..) avevo utilizzato il bpac.

In questi giorni ho dovuto eseguire la stessa attività su un’altro cliente (DB di Produzione  su DB di Dev su azure SQL server differenti  anche in sottoscrizioni Azure differenti) in questo caso ho provato un comando T-SQL. 
Il comando è:
CREATE DATABASE <nome del DB nella Destinazione> AS COPY <nome Azure SQL server> .<nome del DB sorgente>
Nel dettaglio sono necessarie alcune attività propedeutiche di annotazione e permessi:
– Sul server di destinazione la presenza di una security con Username e Password uguali al DB owner del DB sorgente. (con permessi sull’Azure SQL di destinazione di DBmanager e loginmanager)
– Memorizzare le security del DB di destinazione che andremo a rimuovere 
– Avere un Sql Server Management Studio (SSMS) installato su un client che può accedere ad entrambi gli Azure SQL Server (Ricordarsi di abilitare l’accesso sul firewall dell’Azure SQL server)
Se abbiamo fatto tutte le attività propedeutiche procediamo:
– Accesiamo via SSMS all’ Azure SQL server di destinazione con l’utente comune ai due Server SQL.
– Lanciamo il comando T-SQL:
CREATE DATABASE <nome del DB nella Destinazione> AS COPY <nome Azure SQL server> .<nome del DB sorgente>
  attenzione:
  •  ricordiamoci che il nome dell’Azure SQL server necessita solamente dell’hostname e se abbiamo caratteri particola nel nome (come un meno) di includerlo in “”. Es. “server-sql-azure-01”.<nome DB>
  • conviene, caso di una sostituzione di un DB esistente sulla destinazione, copiarno con un nome differente es <nome DB>NEW e poi procedere in un secondo momento con la rimozione del vecchio DB e la rinomina del nuovo.
al termine avremo il nuovo DB
– Modifichiamo l’owner del DB 
ALTER AUTHORIZATION ON DATABASE::<nome DB> to <nuovo Owner>;

– Rimuoviamo eventuali permessi dell’infrastruttura sorgente.
– Assegniamo al DB i permessi degli utenti (che se abbiamo fatto le azioni propedeutiche ci siamo segnati, oppure se siamo stati furbi possiamo recuperarli dal DB che non abbiamo ancora cancellato)
– Rinominiamo il DB con il nome definitivo
– Cancelliamo la login che avevamo creato  per procedere alla copia (ovviamente solo dal server di destinazione)
Attenzione !!! Ricordiamoci  se presente un backup ( NON MI DITE CHE NON FATE I BACKUP DEI DB …) di andare ad assegnare la policy  che preferite. 
Questo è tutto!!!
Riferimenti Microsoft 
Azure SQL server – Database copy