Backup SQL Server con PowerShell

Backup SQL Server con PowerShell: guida completa 2025 per backup e restore automatico

Il Backup SQL Server con PowerShell è uno dei metodi più efficienti per proteggere i dati aziendali e garantire la continuità operativa. Grazie a PowerShell puoi automatizzare completamente il processo di backup e restore in SQL Server 2022, riducendo gli errori manuali e ottimizzando i tempi di gestione.

Con PowerShell, puoi automatizzare l’intero processo di backup e restore in modo semplice, affidabile e schedulabile tramite Task Scheduler o strumenti di gestione centralizzata.

In questa guida vedremo come:

  • Creare backup SQL Server con PowerShell (completi, differenziali e log)
  • Automatizzare il processo con uno script parametrico
  • Eseguire il ripristino automatico da un file di backup
  • Ricevere notifiche e log dell’esecuzione
  • Applicare best practice di sicurezza e manutenzione

Perché automatizzare il Backup SQL Server con PowerShell

Un’infrastruttura ben gestita deve garantire la continuità operativa anche in caso di guasti, ransomware o cancellazioni accidentali.
Automatizzare i backup SQL Server con PowerShell offre vantaggi importanti:

  • ✅ Nessun intervento manuale richiesto
  • 🕒 Pianificazione automatica (giornaliera o settimanale)
  • 🧠 Log centralizzato delle operazioni
  • 🔐 Sicurezza dei file con compressione e cifratura
  • ☁️ Integrazione con sistemi cloud o NAS di rete

Esempio reale: in un ambiente con SQL Server 2022 e più database, uno script PowerShell può gestire il backup giornaliero di tutti i DB, archiviando i file su un NAS o in Azure Blob Storage.

Prerequisiti

Prima di iniziare, assicurati di avere:

  • SQL Server 2019 o 2022 installato
  • PowerShell 5.1 o superiore
  • Permessi di amministratore su Windows Server
  • Il modulo SQLServer (installabile con PowerShell):
Install-Module -Name SqlServer

Il modulo SqlServer sostituisce il vecchio SQLPS e include cmdlet aggiornati per backup, restore e gestione istanze.

Backup SQL Server con PowerShell: creare uno script per il backup automatico

Di seguito un esempio di script completo per eseguire il backup giornaliero di tutti i database

# Script: Backup-SQLServer.ps1
param(
    [string]$ServerName = "localhost",
    [string]$BackupPath = "E:\Backup\SQL",
    [string]$LogPath = "E:\Backup\Logs"
)

# Crea cartelle se non esistono
New-Item -ItemType Directory -Force -Path $BackupPath, $LogPath | Out-Null

# Ottieni la data corrente
$Data = Get-Date -Format "yyyyMMdd_HHmm"

# Recupera i database
Import-Module SqlServer
$Databases = Get-SqlDatabase -ServerInstance $ServerName | Where-Object { $_.IsSystemObject -eq $false }

# Esegue il backup per ogni database
foreach ($db in $Databases) {
    $FileName = "$BackupPath\$($db.Name)_$Data.bak"
    Backup-SqlDatabase -Database $db.Name -ServerInstance $ServerName -BackupFile $FileName -CompressionOption On
    Add-Content "$LogPath\Backup_$Data.log" "Backup completato: $($db.Name) - $(Get-Date)"
}

Write-Host "Backup SQL Server con PowerShell completato con successo!"

Come pianificarlo

  1. Apri Utilità di pianificazioneCrea attività base
  2. Scegli la frequenza (ogni giorno alle 23:00, ad esempio)
  3. Azione → Avvia programma
  4. Programma:
powershell.exe -File "E:\Script\Backup-SQL-Server-con-PowerShell.ps1"

In questo modo il backup avverrà automaticamente anche se nessun utente è connesso.

Automatizzare il restore (ripristino)

Lo script seguente permette di ripristinare automaticamente un database da un file .bak:

# Script: Restore-SQLServer.ps1
param(
    [string]$ServerName = "localhost",
    [string]$DatabaseName = "MyDB",
    [string]$BackupFile = "E:\Backup\SQL\MyDB_20251010_2300.bak"
)

Import-Module SqlServer

Restore-SqlDatabase -ServerInstance $ServerName `
    -Database $DatabaseName `
    -BackupFile $BackupFile `
    -ReplaceDatabase `
    -RelocateFile @{"MyDB"="E:\SQLData\MyDB.mdf"; "MyDB_log"="E:\SQLLogs\MyDB.ldf"}

Write-Host "Ripristino completato per il database $DatabaseName"

Questo script è utile per ambienti di test, disaster recovery o per sincronizzare database di sviluppo.

Backup SQL Server con PowerShell: sicurezza e best practice

Per garantire integrità e sicurezza dei backup:

  • Archivia i file in un percorso protetto da accessi non autorizzati
  • Abilita la compressione per ridurre lo spazio
  • Cifra i file con EncryptByKey o EncryptByPassword se contengono dati sensibili
  • Prevedi una rotazione dei backup: ad esempio, conserva 7 giorni di backup completi
  • Usa PowerShell logging per tracciare ogni esecuzione:
Start-Transcript -Path "E:\Backup\Logs\BackupLog_$Data.txt"
# ...comandi...
Stop-Transcript

Verifica automatica del backup

Puoi validare automaticamente i file con:

Test-SqlBackup -ServerInstance "localhost" -BackupFile "E:\Backup\SQL\MyDB_20251010_2300.bak"

Oppure testare un restore in ambiente isolato:

Restore-SqlDatabase -ServerInstance "localhost\TEST" -Database "TestDB" -BackupFile "E:\Backup\SQL\MyDB_20251010_2300.bak" -NoRecovery

In ambienti enterprise, è consigliabile eseguire un restore di test almeno una volta a settimana

Log, notifiche e report

Aggiungere un sistema di notifica via email o Teams migliora il controllo dell’amministratore e completa il processo di Backup SQL Server con PowerShell:

Send-MailMessage `
  -To "admin@azienda.it" `
  -From "backup@server.it" `
  -Subject "Backup SQL Server con PowerShell completato" `
  -Body "Backup SQL Server con PowerShell eseguito con successo alle $Data" `
  -SmtpServer "mail.azienda.it"

Puoi integrare anche Microsoft Teams o Telegram con webhook per ricevere notifiche istantanee ogni volta che lo script di Backup SQL Server con PowerShell viene eseguito.

Come integrare lo script in ambienti aziendali

In un’infrastruttura Windows Server 2022 o in cluster Proxmox + SQL Server 2022, lo script può essere centralizzato in una cartella condivisa e richiamato da più server, mantenendo uniformità e controllo.
Puoi inoltre esportare i log in Excel o Power BI per creare un cruscotto giornaliero dei backup.

FAQ

Posso eseguire il backup di un singolo database?

Sì, basta modificare lo script e specificare il nome del database nel parametro -Database.

Come faccio a comprimere i file di backup?

Il parametro -CompressionOption On riduce notevolmente lo spazio occupato.

È possibile cifrare i backup?

Sì, SQL Server 2022 supporta la cifratura AES con chiavi certificate.

Dove conviene salvare i backup?

Idealmente su storage separato dal database, meglio se offsite o in cloud (Azure, NAS, S3 compatibile).

Conclusione

Automatizzare il backup SQL Server con PowerShell è la soluzione ideale per chi vuole un’infrastruttura solida, sicura e senza interventi manuali.
Con pochi script, puoi ottenere backup giornalieri, restore rapidi e una gestione completa del ciclo di vita dei dati, migliorando l’affidabilità e la compliance del sistema informativo.

Ti riassumo in maniera sintetica gli step da seguire per Automatizzare il backup SQL Server con PowerShell

In questa guida vedrai passo dopo passo come creare un backup SQL Server con PowerShell automatico, utile per mettere al sicuro i tuoi database in modo programmato. Segui le istruzioni per configurare lo script, pianificare l’esecuzione e verificare che i file di backup vengano generati correttamente.

Step 1 -Aprire PowerShell come amministratore

Avvia PowerShell con diritti di amministratore per poter accedere ai moduli SQL Server e alle cartelle di destinazione dei backup. Digita “PowerShell” nel menu Start, clicca con il tasto destro e seleziona “Esegui come amministratore”.

Step 2 – Scrivere lo script di backup

Crea uno script PowerShell che esegua il Backup SQL Server con PowerShell indicando istanza, database e cartella di destinazione.

Step 3 – Pianificare l’esecuzione automatica tramite Task Scheduler

Apri l’Utilità di pianificazione di Windows e crea una nuova attività. Imposta come azione l’esecuzione dello script PowerShell di backup. In questo modo potrai eseguire il backup giornalmente o settimanalmente senza intervento manuale.

Step 4 – Verificare l’esito del backup

Controlla la cartella di destinazione per assicurarti che il file generato dallo script di Backup SQL Server con PowerShell sia corretto.

Step 5 – Automatizzare il restore (opzionale)

Puoi impostare un secondo script per il restore automatico, utile per test o emergenze, sempre riferendoti al Backup SQL Server con PowerShell.

Autore Bartolomeo

Consulente tecnico con la passione per il web e la tecnologia e tutto quello che le ronza intorno.
Nel tempo libero scrivo articoli per il mio blog su argomenti vari, in particolare su configurazione Windows, Linux e WordPress.

Condividi questo articolo!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ho letto la policy privacy e accetto il trattamento dei miei dati personali in conformità al D.Lgs. 196/2003