Backup automatici di SQL Server

Abbiamo una istanza di SQL Server (mettiamo SQL Server 2016 Express) in esecuzione su un sistema operativo Windows (come Windows Server 2016). Vogliamo pianificare dei backups automatici, magari che scadano dopo un certo numero di giorni per consentirne la sovrascrittura ed evitaare che occupino troppo spazio du disco. Per prima cosa occorre aprire SQL Server Management Studio. In "Server Objects", tasto destro su "Backup Devices" e selezionare "New Backup Device". Inserire un nome (segnarselo) e un percorso (meglio se su hard disk diverso, per proteggersi da errori del disco che contiene il database). A questo punto, tasto destro sul dispositivo appena creato e selezionare "Back up a database". Selezionare il database e, nelle opzioni, impostare una data di scadenza ("backup will expire") se si vuole consentre di sovrascrivere il backup dopo un certo numero di giorni.

A questo punto si può create uno script bat.


sqlcmd -S db_instance -E -Q 
"BACKUP DATABASE my_database TO backup_device_name with RETAINDAYS=30"			

"db_instance" è il nome dell'istanza SQL server (si può specificare anche il nome della macchina e un protocollo, consultare la documentazione ufficiale). "my_database" è il database di cui si vuole creare il backup, "backup_device_name" è il nome del dispositivo creato in precedenza. "with RETAINDAYS" è un parametro opzionale che, come detto, serve a consentire la sovrascrittura dei backups dopo i giorni indicati, evitando che il file diventi troppo grande.

Ora non resta che impostare il job automatico. Aprire il "Task Scheduler" di Windows, tasto destro e selezionare "create basic task". Seguire le istruzioni per impostare un nome, la periodicità, la data di inizio. Selezionare "start a program" come "action", fornendo il path al file bat sopra creato. Bisogna infine assicurarsi che il job venga eseguito coi giusti privilegi. Da "task scheduler library" selezionare il job appena creato, visualizzare le proprietà e spuntare "Run with highest privileges".