Migrate SQL Server to Azure SQL Virtual Machine with DMS Online

Step 4 — Configurazione dei backup dei log (SQL Server Agent Job)

Dopo aver eseguito il backup FULL iniziale, entra in gioco il vero cuore della migrazione online: i backup dei log transazionali.

Sono proprio questi backup che permettono ad Azure DMS di mantenere il database di destinazione continuamente aggiornato mentre quello sorgente continua a lavorare.

Concetto chiave

Durante la migrazione:

  • il database sorgente rimane attivo
  • tutte le modifiche vengono registrate nei log
  • i backup dei log vengono salvati su Blob Storage
  • Azure DMS li legge e li applica sulla destinazione

In questo modo i due ambienti restano sincronizzati fino al momento del cutover.

Script per il backup dei log

Per eseguire il backup dei log utilizziamo uno script simile a quello del FULL, ma con una differenza importante: ogni file deve avere un nome univoco, tipicamente con un timestamp.

Esempio per tutti i database:

DECLARE @DBName NVARCHAR(256);
DECLARE @SQL NVARCHAR(MAX);
DECLARE @TimeStamp NVARCHAR(50);

SET @TimeStamp = REPLACE(CONVERT(VARCHAR(19), GETDATE(), 120), ':', '-');
SET @TimeStamp = REPLACE(@TimeStamp, ' ', '_');

DECLARE db_cursor CURSOR FOR
SELECT name
FROM sys.databases
WHERE database_id > 4
  AND recovery_model_desc = 'FULL'
  AND state_desc = 'ONLINE';

OPEN db_cursor;
FETCH NEXT FROM db_cursor INTO @DBName;

WHILE @@FETCH_STATUS = 0
BEGIN
    SET @SQL = N'BACKUP LOG ' 
             + QUOTENAME(@DBName) 
             + N'
TO URL = ''https://<StorageAccount>.blob.core.windows.net/backup/'
             + @DBName + N'/' + @DBName 
             + N'_LOG_' + @TimeStamp + N'.trn''
WITH INIT, COMPRESSION, CHECKSUM, STATS = 10;';

    PRINT @SQL;
    EXEC sp_executesql @SQL;

    FETCH NEXT FROM db_cursor INTO @DBName;
END;

CLOSE db_cursor;
DEALLOCATE db_cursor;

 


Configurazione del Job SQL Server Agent

Questo script deve essere eseguito automaticamente a intervalli regolari tramite SQL Server Agent.

I passaggi sono:

  • apri SQL Server Management Studio
  • vai su SQL Server Agent → Jobs → New Job
  • assegna un nome (es. DMS_LogBackup_Migration)
  • aggiungi uno step con lo script T-SQL
  • imposta il database su master

Poi configura la schedulazione:

  • tipo: ricorrente
  • frequenza: ogni 15 minuti (o anche meno, in base alle esigenze)

Verifica del funzionamento

Dopo aver attivato il job, puoi verificare il corretto funzionamento controllando il Blob Storage.

Dovresti iniziare a vedere file di questo tipo:

  • Database01_LOG_2026-04-29_14-30-00.trn
  • Database01_LOG_2026-04-29_14-45-00.trn

Se i file vengono creati correttamente, significa che la sincronizzazione è pronta per essere gestita da Azure DMS.


Attenzione a questi aspetti

Ci sono alcune cose da tenere d’occhio:

  • se i backup dei log non vengono eseguiti, la migrazione si blocca
  • se l’intervallo è troppo alto, aumenta il tempo di cutover
  • se lo storage ha problemi, DMS non riesce ad aggiornare la destinazione