Condividi ora:
Sommario nascondere

di riserva SQL Server database con la nostra guida completa del 2025. Istruzioni dettagliate e best practice per tutti i livelli di competenza.

1. Introduzione a SQL Server di riserva

1.1 Che cos'è SQL Server Backup?

SQL Server Il backup è il processo di creazione di copie dei file del database per proteggerli dalla perdita di dati. Un backup cattura lo stato del database in un momento specifico, consentendo di ripristinare i dati in caso di guasti hardware, errori umani o disastri.

SQL Server per impostazione predefinita memorizza i backup nei file .bak, che contengono tutti gli oggetti del database, tra cui tabelle, procedure archiviate, viste, indici e registri delle transazioni.

1.2 Perché SQL Server Il backup è fondamentale

I backup dei database rappresentano l'ultima linea di difesa contro la perdita di dati. Senza backup adeguati, la tua organizzazione rischia:

  • Perdita permanente dei dati da guasti o danneggiamenti hardware
  • Tempo di inattività prolungato durante i tentativi di recupero
  • Interruzione dell'attività e perdita di fatturato
  • Violazioni di conformità se i dati non possono essere recuperati
  • Danno alla reputazione dalle interruzioni del servizio

Regular SQL Server i backup garantiscono la continuità aziendale e soddisfano i requisiti normativi per la protezione dei dati.

1.3 Scenari comuni di perdita di dati

Capire quando si verifica una perdita di dati aiuta a sviluppare una strategia di backup efficace:

  • Guasti hardware: Arresti anomali del disco, malfunzionamenti del server o guasti del sistema di archiviazione
  • Errori umani: Eliminazioni accidentali, aggiornamenti errati o tabelle eliminate
  • Problemi software: Bug dell'applicazione, aggiornamenti danneggiati o arresti anomali del sistema
  • Violazioni della sicurezza: Attacchi ransomware, eliminazioni dannose o accessi non autorizzati
  • Disastri naturali: Incendi, inondazioni o interruzioni di corrente che interessano i data center

2. Comprensione SQL Server Tipi di backup

SQL Server supporta più tipi di backup, ognuno dei quali soddisfa diverse esigenze di ripristino e requisiti di archiviazione.

2.1 Backup completo

Un backup completo crea una copia completa dell'intero database, inclusi tutti i file di dati e parte del registro delle transazioni necessari per il ripristino.

2.1.1 Quando utilizzare il backup completo

I backup completi sono ideali per:

  • Stabilire una base di riferimento per altri tipi di backup
  • Database di piccole e medie dimensioni in cui il tempo di backup è accettabile
  • Piani di backup settimanali o mensili
  • Database con modifiche poco frequenti

2.1.2 Vantaggi e limitazioni del backup completo

vantaggi:

  • Processo di ripristino più semplice: un singolo file contiene tutto
  • Autonomo e indipendente da altri backup
  • Tempo di recupero più rapido per il ripristino completo del database

limitazioni:

  • Richiede molto spazio di archiviazione
  • Tempi di backup più lunghi per database di grandi dimensioni
  • Maggiore consumo di risorse durante le operazioni di backup

2.2 Backup differenziale

Un backup differenziale acquisisce solo le modifiche ai dati apportate dall'ultimo backup completo, riducendo i tempi di backup e i requisiti di archiviazione.

2.2.1 Come funziona il backup differenziale

I backup differenziali tengono traccia delle modifiche utilizzando le estensioni modificate. Quando si ripristina, SQL Server Applica prima l'ultimo backup completo, poi applica il backup differenziale più recente.

2.2.2 Backup completo vs differenziale

Backup completo vs differenziale

Aspetto Backup completo Backup differenziale
Taglia Database completo Solo modifiche dall'ultimo backup completo
Tempo di backup Longest Più veloce del pieno
Processo di ripristino Ripristino di un singolo file Richiede differenziale completo + differenziale
Spazio di archiviazione richiesto La maggior parte dello spazio Inizialmente meno spazio, cresce nel tempo

2.3 Backup del registro delle transazioni

I backup del registro delle transazioni acquisiscono tutte le transazioni effettuate a partire dall'ultimo backup del registro, consentendo il ripristino in un determinato momento.

2.3.1 Comprensione dei registri delle transazioni

Il registro delle transazioni registra ogni modifica al database. I backup del registro troncano la parte inattiva del registro, impedendogli di crescere indefinitamente e di riempire il disco.

2.3.2 Recupero point-in-time

I backup del registro delle transazioni consentono di ripristinare il database a un momento specifico all'interno di un backup del registro. Questa funzionalità è fondamentale per il ripristino in caso di modifiche o eliminazioni accidentali dei dati.

Per eseguire il ripristino point-in-time, è necessario:

  • L'ultimo backup completo
  • Il backup differenziale più recente (opzionale)
  • Tutti i backup del registro delle transazioni dal backup completo/differenziale fino al momento desiderato

2.4 Backup del registro di coda

I backup tail-log catturano i record di log che non sono ancora stati sottoposti a backup, prevenendo la perdita di dati e mantenendo intatta la catena di log. Prima di ripristinare un SQL Server database fino al suo punto più recente, è necessario eseguire il backup della parte finale del suo log delle transazioni. Il backup della parte finale del log è l'ultimo backup di interesse nel piano di ripristino del database.

Il diagramma che spiega i backup del tail-log in SQL Server.

Attenzione: Non tutti gli scenari di ripristino richiedono un backup del log finale. Non è necessario se il punto di ripristino è contenuto in un backup del log precedente. Un backup del log finale non è inoltre necessario se si sposta o si sostituisce (sovrascrive) un database e non è necessario ripristinarlo a un punto temporale successivo al backup più recente.

2.4.1 Quando sono necessari i backup del tail-log

Gli scenari seguenti descrivono quando è opportuno eseguire un backup del tail log:

Ripristino del database online: Se il database è online e si prevede di eseguire un'operazione di ripristino, iniziare eseguendo il backup della coda del log. Per evitare errori per un database online, è necessario utilizzare l'opzione WITH NORECOVERY dell'istruzione Transact-SQL BACKUP quando si esegue il backup. SQL Server Banca dati.

Recupero del database offline: Se un database è offline e non si avvia e devi ripristinarlo, esegui prima un backup della parte finale del log. Poiché in questa fase non è possibile effettuare transazioni, l'utilizzo dell'opzione WITH NORECOVERY è facoltativo. In questo scenario, NORECOVERY equivale a un backup del log delle transazioni di sola copia.

Backup del database danneggiato: Se un database è danneggiato, provare a eseguire un backup del tail log utilizzando l'opzione WITH CONTINUE_AFTER_ERROR dell'istruzione BACKUP. Su un database danneggiato, il backup del tail log può avere esito positivo solo se i file di log non sono danneggiati, il database è in uno stato che supporta i backup del tail log e il database non contiene modifiche registrate in massa. Se non è possibile creare un backup del tail log, tutte le transazioni eseguite dopo l'ultimo MS SQL Server Il database di backup è andato perso.

2.4.2 Opzioni chiave per i backup del tail-log

SENZA RECUPERO: Utilizzare WITH NORECOVERY se si esegue il backup di una parte del log di un database online che si prevede di ripristinare in seguito. NORECOVERY porta il database offline. È anche possibile eseguire il backup SQL Server Log di coda di un database offline. Se si desidera lasciare il database offline, utilizzare WITH NORECOVERY. Si noti che il log verrà troncato a meno che non si specifichi l'opzione COPY_ONLY o NO_TRUNCATE.

CONTINUA_DOPO_L'ERRORE: Utilizzare CONTINUE_AFTER_ERROR solo se si esegue il backup della coda di un database danneggiato. Quando si esegue il backup della coda di un log su un database danneggiato, alcuni dei metadati normalmente acquisiti nei backup dei log potrebbero non essere disponibili.

2.5 Backup di sola copia

I backup di sola copia creano un backup indipendente senza influire sulla normale sequenza di backup. Non interrompono le catene di backup differenziali né la continuità del registro delle transazioni.

Utilizzare backup di sola copia per:

  • Creazione di copie di database di test o di sviluppo
  • Backup ad hoc senza impatto sui backup pianificati
  • Eseguire il backup prima di modifiche o test importanti

2.6 Backup di file e filegroup

I backup di file e filegroup si concentrano su specifici file o filegroup del database, anziché sull'intero database. Questo approccio è ideale per database di grandi dimensioni, dove il backup completo richiederebbe troppo tempo.

I vantaggi includono:

  • Operazioni di backup più veloci per database di grandi dimensioni
  • Backup parallelo di più filegroup
  • Opzioni di recupero granulare
  • Piani di backup ottimizzati per filegroup di sola lettura

2.7 Backup parziale

I backup parziali includono tutti i dati nel filegroup primario e in tutti i filegroup di lettura/scrittura, esclusi i filegroup di sola lettura. Ciò riduce le dimensioni e i tempi di backup per i database con dati storici statici archiviati in filegroup di sola lettura.

3. SQL Server Modelli di recupero

SQL Server I modelli di ripristino determinano quali tipi di backup sono disponibili e come vengono gestiti i registri delle transazioni.

3.1 Modello di recupero semplice

3.1.1 Caratteristiche e casi d'uso

Il ripristino semplice tronca automaticamente il registro delle transazioni dopo ogni checkpoint, recuperando spazio senza richiedere backup del registro.

Ideale per:

  • Database di sviluppo e test
  • Database in cui la perdita di dati tra i backup è accettabile
  • Data warehouse con processi ETL che possono essere rieseguiti
  • Database di sola lettura o di reporting

3.1.2 Opzioni di backup disponibili

Il ripristino semplice supporta:

  • Backup completi
  • Backup differenziali
  • Backup di file e filegroup
  • Backup di sola copia

I backup del registro delle transazioni sono non disponibile nel modello di recupero semplice.

3.2 Modello di recupero completo

3.2.1 Caratteristiche e vantaggi

Il ripristino completo registra tutte le transazioni e conserva i record del registro fino al backup. Ciò consente il ripristino completo dei dati in qualsiasi momento all'interno di un backup del registro delle transazioni.

Principali vantaggi:

  • Minimo potenziale di perdita di dati
  • Capacità di ripristino point-in-time
  • Supporta la spedizione dei log e il mirroring del database
  • Massima flessibilità di recupero

3.2.2 Gestione del registro delle transazioni

In caso di ripristino completo, è necessario eseguire backup regolari del registro delle transazioni per:

  • Impedisci al registro delle transazioni di riempire lo spazio su disco
  • Mantenere una catena di backup continua
  • Abilita il ripristino point-in-time
  • Controlla la crescita del file di registro

Pianificazione tipica dei backup: backup completi settimanali, backup differenziali giornalieri, backup del registro ogni 15-30 minuti.

3.3 Modello di recupero con registrazione in blocco

3.3.1 Quando utilizzare la registrazione in blocco

Il ripristino con registrazione in blocco registra solo le operazioni in blocco come BULK INSERT, SELECT INTO e ricostruzioni di indici, mantenendo al contempo la registrazione completa per le transazioni regolari.

Utilizzare il ripristino con registrazione in blocco quando:

  • Esecuzione di grandi operazioni di importazione in blocco
  • Ricostruzione degli indici su tabelle di grandi dimensioni
  • Esecuzione di operazioni che traggono vantaggio da una registrazione minima
  • Necessità di ridurre le dimensioni del registro delle transazioni durante operazioni specifiche

3.3.2 Limitazioni e considerazioni

Limitazioni importanti:

  • Ripristino point-in-time non disponibile durante le operazioni in blocco
  • I backup dei log sono più grandi quando si verificano operazioni in blocco
  • È necessario passare dalla registrazione completa a quella in blocco, a seconda delle necessità

3.4 Scelta del modello di recupero corretto

Seleziona il tuo modello di ripristino in base alle esigenze aziendali:

Modello di recupero Rischio di perdita di dati Recupero puntuale Ideale per
Semplice Modifiche dall'ultimo backup Non Sviluppo/test, perdita di dati accettabile
Lunga Minimo (in genere minuti) Si Database di produzione, dati critici
Registrato in blocco Modifiche dall'ultimo backup del registro Limitato durante le operazioni in serie Utilizzo temporaneo durante le operazioni di produzione in serie

4. di riserva SQL Server Database che utilizza SSMS

4.1 Prerequisiti e preparazione

Prima di eseguire il backup SQL Server database, assicurarsi:

  • Hai le autorizzazioni appropriate (autorizzazione db_owner o BACKUP DATABASE)
  • Spazio su disco sufficiente per il file di backup
  • SQL Server Management Studio (SSMS) installato
  • Percorsi di rete accessibili se si esegue il backup in posizioni di rete

4.2 Procedura dettagliata: backup completo con SSMS

Segui questi passaggi per creare un backup completo del tuo SQL Server database utilizzando SSMS.

Apertura 4.2.1 SQL Server Studio di gestione

  1. Lancio SQL Server Studio di gestione
  2. Inserisci il nome del tuo server nel Nome del server campo
  3. Seleziona il tuo metodo di autenticazione
  4. Clicchi Connettere

4.2.2 Selezione delle opzioni di database e backup

  1. In Esplora oggetti, espandere il Database nodo
  2. Fare clic con il pulsante destro del mouse sul database di cui si desidera eseguire il backup
  3. Seleziona Compiti -> Backup
    Avviare un'attività di backup per un SQL Server banca dati in SQL Server Studio di gestione.
  4. Nel Backup del database finestra, verifica il nome del database
  5. Seleziona Lunga la Tipo di backup
    Crea un backup completo di un SQL Server banca dati in SQL Server Studio di gestione.

4.2.3 Configurazione della destinazione del backup

  1. Sotto Nei Dintorni, fare clic su Rimuovere per cancellare il percorso predefinito (se necessario)
  2. Clicchi Aggiungi per specificare una nuova posizione di backup
  3. Inserisci il percorso e il nome del file con .bak estensione
  4. Clicchi OK per confermare la destinazione

Imposta la destinazione del backup in SQL Server Studio di gestione.

4.2.4 Advanced Backup Impostazioni profilo

  1. Clicchi Opzioni multimediali nel pannello di sinistra
  2. Scegli le opzioni di backup:
    • Sovrascrivi tutti i set di backup esistenti – Sostituisce i backup esistenti
    • Aggiungi al set di backup esistente – Aggiunge al file di backup esistente

    Imposta le opzioni del supporto di backup in SQL Server Studio di gestione.

  3. Clicchi Opzioni di backup nel pannello di sinistra
  4. Configurare le impostazioni facoltative:
    • Comprimi il backup – Riduce le dimensioni del file di backup
    • Cripta il backup – Protegge i dati sensibili
    • Verifica il backup al termine – Controlla l’integrità del backup

    Imposta le opzioni di backup in SQL Server Studio di gestione.

4.2.5 Esecuzione del backup

  1. Rivedere tutte le impostazioni in Backup del database finestra
  2. Clicchi OK per avviare il processo di backup
  3. Attendi il completamento del backup
  4. Al termine del backup viene visualizzato un messaggio di successo
  5. Clicchi OK per chiudere la finestra di dialogo di conferma

4.3 Creazione di backup differenziale con SSMS

Per creare un backup differenziale, seguire gli stessi passaggi di un backup completo, ma selezionare Differenziale come tipo di backup nel passaggio 4.2.2. Ricorda che i backup differenziali richiedono un backup completo precedente come base di partenza.

Creare un backup differenziale di un SQL Server banca dati in SQL Server Studio di gestione.

4.4 Creazione di un backup del registro delle transazioni con SSMS

I backup del registro delle transazioni sono disponibili solo per i database che utilizzano modelli di ripristino completi o con registrazione in blocco.

  1. Fare clic con il pulsante destro del mouse sul database in Esplora oggetti
  2. Seleziona Compiti -> Backup
  3. Scegli Registro delle transazioni come tipo di backup
  4. Configurare la destinazione e le opzioni secondo necessità
  5. Clicchi OK per creare il backup del registro

Creare un backup del registro delle transazioni di un SQL Server banca dati in SQL Server Studio di gestione.

4.5 Creazione di backup di sola copia con SSMS

I backup di sola copia non interferiscono con la normale sequenza di backup.

  1. Segui i passaggi per creare un backup completo
  2. Nel Opzioni di backup pagina
  3. Controlla il Backup di sola copia opzione
  4. Completare il processo di backup normalmente

Crea un backup di sola copia di un SQL Server banca dati in SQL Server Studio di gestione.

5. di riserva SQL Server Database che utilizza T-SQL

5.1 Sintassi di base del database di backup

Il comando T-SQL BACKUP DATABASE fornisce il controllo programmatico su SQL Server backup.

BACKUP DATABASE database_name
TO DISK = 'backup_file_path'
WITH options;

5.2 Comandi T-SQL per il backup completo

5.2.1 Semplice script di backup completo

Crea un backup completo di base con opzioni minime:

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
GO

5.2.2 Backup completo con opzioni

Aggiungi informazioni descrittive e opzioni di formattazione:

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
WITH FORMAT,
     INIT,
     NAME = 'AdventureWorks-Full Database Backup',
     DESCRIPTION = 'Full backup of AdventureWorks database',
     STATS = 10
GO

Opzioni spiegate:

  • FORMATO – Crea un nuovo set di backup
  • INIT – Sovrascrive il file di backup esistente
  • NOME – Assegna il nome del set di backup
  • DESCRIZIONE – Aggiunge testo descrittivo
  • STATISTICHE – Mostra i progressi ogni 10%

5.3 Comandi T-SQL per il backup differenziale

I backup differenziali utilizzano l'opzione DIFFERENTIAL:

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Diff.bak'
WITH DIFFERENTIAL,
     INIT,
     NAME = 'AdventureWorks-Differential Backup',
     STATS = 10
GO

5.4 Comandi T-SQL per il backup del registro delle transazioni

Utilizzare BACKUP LOG per i backup del registro delle transazioni:

BACKUP LOG AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Log.trn'
WITH INIT,
     NAME = 'AdventureWorks-Transaction Log Backup',
     STATS = 10
GO

5.5 Opzioni avanzate di backup T-SQL

5.5.1 Backup su più file

Distribuisci il backup su più file per prestazioni più rapide:

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_1.bak',
   DISK = 'D:\Backups\AdventureWorks_2.bak',
   DISK = 'E:\Backups\AdventureWorks_3.bak'
WITH FORMAT, INIT
GO

5.5.2 Backup con compressione

Ridurre le dimensioni del file di backup e la larghezza di banda della rete:

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Compressed.bak'
WITH COMPRESSION,
     INIT,
     STATS = 10
GO

5.5.3 Backup con crittografia

Proteggi i dati sensibili con la crittografia:

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Encrypted.bak'
WITH COMPRESSION,
     ENCRYPTION (
         ALGORITHM = AES_256,
         SERVER CERTIFICATE = BackupCertificate
     ),
     STATS = 10
GO

5.5.4 Backup con protezione tramite password

Aggiungi protezione tramite password (deprecata, usa invece la crittografia):

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
WITH PASSWORD = 'StrongPassword123!',
     INIT
GO

5.5.5 Backup speculari

Crea copie simultanee in posizioni diverse:

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
MIRROR TO DISK = 'D:\Backups\AdventureWorks_Mirror.bak'
WITH FORMAT, INIT
GO

5.6 Esempi e script di backup T-SQL

Script di backup completo con gestione degli errori:

DECLARE @BackupPath NVARCHAR(500);
DECLARE @DatabaseName NVARCHAR(128) = 'AdventureWorks';
DECLARE @BackupDate NVARCHAR(20);

SET @BackupDate = CONVERT(NVARCHAR(20), GETDATE(), 112);
SET @BackupPath = 'C:\Backups\' + @DatabaseName + '_' + @BackupDate + '.bak';

BEGIN TRY
    BACKUP DATABASE @DatabaseName
    TO DISK = @BackupPath
    WITH COMPRESSION,
         INIT,
         NAME = @DatabaseName + '-Full Backup',
         STATS = 10;
    
    PRINT 'Backup completed successfully: ' + @BackupPath;
END TRY
BEGIN CATCH
    PRINT 'Backup failed: ' + ERROR_MESSAGE();
END CATCH
GO

6. di riserva SQL Server Database tramite PowerShell

6.1 Cmdlet di backup di PowerShell

SQL Server Il modulo PowerShell fornisce cmdlet per l'automazione del backup:

  • Backup-SqlDatabase – Crea backup del database
  • Ripristina-SqlDatabase – Ripristina i backup del database
  • Ottieni-SqlDatabase – Recupera le informazioni del database

Importa il SQL Server modulo:

Import-Module SqlServer

6.2 Creazione di script di backup con PowerShell

Comando di backup di base di PowerShell:

Backup-SqlDatabase -ServerInstance "localhost" `
                    -Database "AdventureWorks" `
                    -BackupFile "C:\Backups\AdventureWorks.bak" `
                    -BackupAction Database `
                    -CompressionOption On

Esempio di backup differenziale:

Backup-SqlDatabase -ServerInstance "localhost" `
                    -Database "AdventureWorks" `
                    -BackupFile "C:\Backups\AdventureWorks_Diff.bak" `
                    -BackupAction Database `
                    -Incremental

Backup del registro delle transazioni:

Backup-SqlDatabase -ServerInstance "localhost" `
                    -Database "AdventureWorks" `
                    -BackupFile "C:\Backups\AdventureWorks_Log.trn" `
                    -BackupAction Log

6.3 Automazione dei backup con PowerShell

Crea uno script di backup automatico per più database:

# Configuration
$ServerInstance = "localhost"
$BackupPath = "C:\Backups"
$Databases = @("AdventureWorks", "TestDB", "ProductionDB")
$Timestamp = Get-Date -Format "yyyyMMdd_HHmmss"

# Create backup directory if not exists
if (-not (Test-Path $BackupPath)) {
    New-Item -ItemType Directory -Path $BackupPath
}

# Backup each database
foreach ($Database in $Databases) {
    $BackupFile = Join-Path $BackupPath "$Database`_$Timestamp.bak"
    
    try {
        Backup-SqlDatabase -ServerInstance $ServerInstance `
                          -Database $Database `
                          -BackupFile $BackupFile `
                          -BackupAction Database `
                          -CompressionOption On
        
        Write-Host "Successfully backed up $Database to $BackupFile" -ForegroundColor Green
    }
    catch {
        Write-Host "Failed to backup $Database : $_" -ForegroundColor Red
    }
}

7. di riserva SQL Server Database tramite riga di comando

SQL Server fornisce utilità della riga di comando che consentono di eseguire il backup SQL Server database senza utilizzare SSMS o interfacce grafiche. Questi strumenti sono essenziali per scenari di automazione, scripting e amministrazione remota.

7.1 Utilizzare il database di backup SQLCMD

SQLCMD è la moderna utilità della riga di comando per SQL Server che ha sostituito OSQL. Offre funzionalità avanzate ed è lo strumento consigliato per eseguire comandi T-SQL dal prompt dei comandi.

7.1.1 Sintassi di base di SQLCMD

sqlcmd -S ServerName -d DatabaseName -Q "BACKUP DATABASE statement"
  • -S: Specifica il SQL Server nome dell'istanza
  • -d: Specifica il nome del database
  • -Q: Esegue una query ed esce
  • -E: Utilizza l'autenticazione di Windows
  • -U: Specifica SQL Server nome utente di accesso
  • -P: Specifica la password per SQL Server accesso

7.1.2 Creazione di backup con SQLCMD

Per eseguire il backup SQL Server utilizzando SQLCMD, seguire questi passaggi:

  1. Apri Prompt dei comandi or PowerShell
  2. Passare alla SQL Server directory degli strumenti (in genere aggiunta a PATH durante l'installazione)
  3. Eseguire il comando di backup del database SQLCMD con i parametri appropriati
  4. Verifica che il file di backup sia stato creato correttamente

Esempio di comando di backup completo utilizzando l'autenticazione di Windows:

sqlcmd -S localhost -E -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks.bak' WITH COMPRESSION, INIT"

Esempio utilizzando SQL Server Autenticazione:

sqlcmd -S localhost -U sa -P YourPassword -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks.bak' WITH COMPRESSION, INIT"

Creazione di backup differenziale con SQLCMD

sqlcmd -S localhost -E -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks_Diff.bak' WITH DIFFERENTIAL, COMPRESSION, INIT"

Creazione di un backup del registro delle transazioni con SQLCMD

sqlcmd -S localhost -E -Q "BACKUP LOG AdventureWorks TO DISK='C:\Backups\AdventureWorks_Log.trn' WITH COMPRESSION, INIT"

7.1.3 Backup del database dell'editore in SQL Server replicazione

Quando si esegue il backup dei database dell'editore in SQL Server Replicazione: utilizzare l'opzione WITH REPLICATION per preservare i metadati di replicazione e garantire la coerenza delle transazioni.

-- Backup publisher database with replication support
BACKUP DATABASE PublisherDB 
TO DISK = 'C:\Backup\PublisherDB_Full.bak'
WITH REPLICATION, 
     COMPRESSION,
     CHECKSUM,
     INIT,
     STATS = 10;
GO

Per ulteriori dettagli su SQL Server replicazione, vedere il nostro guida completa.

7.2 Utilizzare il database di backup OSQL

OSQL è un'utilità legacy della riga di comando per SQL ServerSebbene Microsoft consigli di utilizzare invece SQLCMD, OSQL rimane disponibile per la compatibilità con script e sistemi precedenti.

7.2.1 Sintassi OSQL di base

La sintassi OSQL è simile a SQLCMD:

osql -S ServerName -d DatabaseName -Q "BACKUP DATABASE statement"
  • -S: SQL Server nome dell'istanza
  • -d: Nome del database
  • -Q: Esegue la query ed esce
  • -E: Utilizza una connessione attendibile (autenticazione di Windows)
  • -U: Nome utente di accesso
  • -P: Password per il login

7.2.2 Creazione di backup con OSQL

Per eseguire operazioni di backup del database OSQL:

  1. Apri Prompt dei comandi
  2. Verifica che OSQL sia disponibile nel tuo SQL Server installazione
  3. Eseguire il comando di backup OSQL

Esempio di backup completo:

osql -S localhost -E -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks.bak' WITH INIT"

Esempio di backup differenziale:

osql -S localhost -E -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks_Diff.bak' WITH DIFFERENTIAL, INIT"

8. Terzo SQL Server Strumenti di backup

Mentre SQL Server Include funzionalità di backup native, strumenti di terze parti offrono funzionalità avanzate, automazione e gestione di livello aziendale per le organizzazioni con requisiti complessi. Queste soluzioni offrono compressione avanzata, gestione centralizzata e flussi di lavoro semplificati per il backup. SQL Server database in più ambienti.

8.1 Veeam Backup per SQL Server

Veeam offre soluzioni complete di protezione dei dati progettate specificamente per il backup SQL Server database con un impatto minimo sui sistemi di produzione.

Caratteristiche principali:

  • Elaborazione consapevole dell'applicazione per SQL Server coerenza del backup
  • Backup e gestione del registro delle transazioni
  • Ripristino point-in-time con opzioni di ripristino granulare
  • Integrazione con Veeam Backup & Replication per una protezione unificata dei dati
  • Verifica e convalida automatizzate del backup
  • Supporto per gruppi di disponibilità sempre attivi
  • A livello di VM e a livello di applicazione SQL Server opzioni di backup

8.2 Barracuda Backup per SQL Server

Barracuda fornisce soluzioni di backup integrate nel cloud con gestione semplificata per MS SQL Server operazioni di backup del database.

Caratteristiche principali:

  • Automatizzata SQL Server pianificazione del backup
  • Replica cloud integrata su Barracuda Cloud Storage
  • Deduplicazione e compressione globali
  • Capacità di ripristino locale immediato
  • Console di gestione basata sul Web
  • Supporto per backup completi, differenziali e del registro delle transazioni
  • Protezione ransomware con backup immutabili

8.3 Veritas NetBackup per SQL Server

Veritas NetBackup è una piattaforma di backup di livello aziendale che fornisce una protezione completa per SQL Server database in ambienti IT complessi.

Caratteristiche principali:

  • Gestione del backup su scala aziendale per migliaia di SQL Server istanze
  • Algoritmi avanzati di deduplicazione e compressione
  • Politiche di backup e pianificazione flessibili
  • Supporto per tutti SQL Server modelli di recupero
  • Integrazione con librerie a nastro e archiviazione cloud.
  • Ripristino granulare di database, tabelle e oggetti
  • Supporto multipiattaforma (Windows, Linux SQL Server)
  • Gestione automatizzata del ciclo di vita del backup

8.4 Commvault Backup e ripristino completi per SQL Server

Commvault offre una gestione intelligente dei dati con backup completo SQL Server capacità e funzioni di automazione avanzate.

Caratteristiche principali:

  • Ottimizzazione del backup basata sull'intelligenza artificiale e rilevamento delle anomalie
  • Piattaforma unificata per backup, ripristino e archiviazione
  • Filtri SQL Server compressione del backup (riduzione fino al 90%)
  • Orchestrazione automatizzata del disaster recovery
  • Sincronizzazione in tempo reale per una protezione RPO prossima allo zero
  • Supporto per SQL Server distribuzioni on-premise, cloud e ibride
  • IntelliSnap per backup basati su snapshot
  • Funzionalità complete di conformità e e-discovery

8.5 Cohesity DataProtect per SQL Server

Cohesity fornisce una gestione dei dati di nuova generazione con infrastruttura iperconvergente per i moderni SQL Server operazioni di backup.

Caratteristiche principali:

  • Architettura su scala web per una gestione semplificata
  • Capacità di ripristino di massa istantaneo per SQL Server banche dati
  • Snapshot coerenti con l'applicazione
  • Deduplicazione globale su tutti i backup
  • Integrazione cloud nativa (AWS, Azure, Google Cloud)
  • Dashboard di analisi e monitoraggio integrate
  • Clona e testa le capacità del database
  • Protezione ransomware con snapshot immutabili

8.6 Red Gate SQL Backup Pro

Red Gate SQL Backup Pro è uno strumento specializzato focalizzato esclusivamente sull'ottimizzazione SQL Server operazioni di backup e ripristino con compressione e prestazioni superiori.

Caratteristiche principali:

  • Rapporti di compressione leader del settore (fino al 95%)
  • Resilienza di rete per il backup SQL Server attraverso connessioni inaffidabili
  • Crittografia di backup con AES a 256 bit
  • Verifica della copia di backup e controllo dell'integrità
  • Cronologia dettagliata dei backup e reportistica
  • Integrazione con SQL Server Studio di gestione
  • Supporto per il backup su posizioni di rete e archiviazione cloud
  • Backup e ripristino paralleli per operazioni più rapide

9. Come ripristinare SQL Server Banca Dati

9.1 Comprensione del processo di ripristino

Ripristino di un SQL Server Il database ricrea il database dai file di backup. Il processo di ripristino legge il file di backup e ricostruisce il database allo stato originale.

Considerazioni importanti:

  • Il ripristino sovrascrive il database esistente
  • Gli utenti vengono disconnessi durante il ripristino
  • Il ripristino deve seguire la sequenza di backup (completo, poi differenziale, poi registri)
  • Il database non è disponibile durante l'operazione di ripristino

9.2 Ripristino del backup completo tramite SSMS

Per ripristinare un backup completo del database, seguire questi passaggi.

9.2.1 Procedura di ripristino passo passo

  1. Apri SQL Server Studio di gestione e connettiti al tuo server
  2. In Esplora oggetti, tasto destro del mouse Database
  3. Seleziona Ripristina database
  4. Nel Fonte sezione, selezionare Dispositivo
  5. Clicca su ... pulsante per cercare i file di backup
  6. Clicchi Aggiungi e vai al tuo file .bak
  7. Selezionare il file di backup e fare clic OK
  8. Nel Nei Dintorni sezione, inserisci il nome del database
  9. Esaminare i set di backup da ripristinare
  10. Clicchi OK per avviare il ripristino

9.2.2 Opzioni e impostazioni di ripristino

Clicchi Opzioni nel pannello di sinistra per configurare:

  • Sovrascrivi il database esistente (CON SOSTITUISCI) – Consente il ripristino su database esistente
  • Conserva gli stati di replicazione (CON KEEP_REPLICATION) - Mantieni il SQL Server replicazione di stato
  • Limita l'accesso al database ripristinato (CON RESTRICTED_USER) – Limita l'accesso dopo il ripristino
  • Stato di recupero – Scegli tra RIPRISTINO CON RECUPERO o NORECOVERY

9.3 Ripristino del backup differenziale

Il ripristino differenziale richiede sia backup completi che differenziali:

  1. Per prima cosa, ripristina il backup completo con NOR RECUPERO opzione
  2. Quindi ripristinare il backup differenziale con RECOVERY opzione

Esempio T-SQL:

-- Restore full backup (NORECOVERY to allow differential)
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY, REPLACE;

-- Restore differential backup (RECOVERY to complete)
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Diff.bak'
WITH RECOVERY;
GO

9.4 Ripristino con backup del registro delle transazioni

Per il ripristino in un dato momento, ripristinare in sequenza:

  1. Ripristina il backup completo con NORECOVERY
  2. Ripristinare il backup differenziale con NORECOVERY (se disponibile)
  3. Ripristina i backup del registro delle transazioni in ordine con NORECOVERY
  4. Ripristina il backup del registro finale con RECOVERY
-- Restore full backup
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY, REPLACE;

-- Restore first log backup
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log1.trn'
WITH NORECOVERY;

-- Restore second log backup with recovery
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log2.trn'
WITH RECOVERY;
GO

9.5 Ripristino point-in-time

Ripristina il database a un punto specifico nel tempo utilizzando l'opzione STOPAT:

-- Restore to specific time: January 15, 2025 at 2:30 PM
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY, REPLACE;

RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log.trn'
WITH RECOVERY, STOPAT = '2025-01-15 14:30:00';
GO

9.6 Ripristino della tabella

SQL Server non supporta il ripristino diretto a livello di tabella dai file di backup. Tuttavia, esistono comunque alcune soluzioni.

9.6.1 Metodo 1: Snapshot del database (ideale per la prevenzione)

Gli snapshot del database rappresentano il modo più rapido per ripristinare i dati delle tabelle, se creati prima che si verifichi il problema. Uno snapshot è una vista statica e di sola lettura di un database in un momento specifico.

Creazione di uno snapshot del database:

-- Create snapshot before making changes
CREATE DATABASE ProductionDB_Snapshot_20250107
ON
( NAME = ProductionDB_Data, 
  FILENAME = 'C:\Snapshots\ProductionDB_Snapshot.ss' )
AS SNAPSHOT OF ProductionDB;
GO

Ripristino dei dati della tabella dallo snapshot:

USE ProductionDB;
GO

-- Replace entire table content
BEGIN TRANSACTION;

-- Disable constraints temporarily
ALTER TABLE dbo.Orders NOCHECK CONSTRAINT ALL;

-- Clear current data
TRUNCATE TABLE dbo.Orders;

-- Restore from snapshot
INSERT INTO dbo.Orders
SELECT * FROM ProductionDB_Snapshot_20250107.dbo.Orders;

-- Re-enable constraints
ALTER TABLE dbo.Orders CHECK CONSTRAINT ALL;

COMMIT TRANSACTION;
GO

Requisiti della versione: Gli snapshot del database sono disponibili in SQL Server Edizione Enterprise (tutte le versioni) e Edizione Standard a partire da SQL Server 2016SP1.

9.6.2 Metodo 2: Ripristino nel database temporaneo (il più comune)

Questo metodo funziona quando è necessario recuperare i dati della tabella dopo che si è verificato un problema e non esiste alcuno snapshot:

  1. Ripristina il backup in un database temporaneo
  2. Copia i dati della tabella dal database temporaneo al database corrente.

9.7 Ripristino pagina

Il ripristino delle pagine consente di recuperare singole pagine danneggiate senza ripristinare l'intero database, riducendo al minimo i tempi di inattività e intervenendo solo sulle pagine corrotte. Questa funzionalità è disponibile solo nei modelli di ripristino Completo o con registrazione in blocco e richiede una sequenza ininterrotta di backup del registro delle transazioni, dal backup della pagina fino al file di registro corrente.

Per eseguire il ripristino della pagina, identificare prima le pagine danneggiate, eseguire un backup del tail-log, ripristinare le pagine specifiche, quindi applicare tutti i log delle transazioni:

-- Identify damaged pages
SELECT * FROM msdb.dbo.suspect_pages
WHERE database_id = DB_ID('AdventureWorks');

-- Take tail-log backup
BACKUP LOG AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_TailLog.trn'
WITH NORECOVERY;

-- Restore damaged pages
RESTORE DATABASE AdventureWorks
PAGE = '1:123, 1:456'
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY;

-- Apply transaction logs
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log1.trn'
WITH NORECOVERY;

RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_TailLog.trn'
WITH RECOVERY;
GO

Attenzione: Il ripristino delle pagine non è disponibile con il modello di recupero semplice. Non è possibile ripristinare le pagine dalle tabelle di sistema o dai metadati del filegroup primario.

9.8 Ripristino a pezzi

Il ripristino parziale ripristina un database in fasi, a livello di filegroup, a partire dal filegroup primario. In questo modo, i dati critici vengono immediatamente resi disponibili, mentre i dati meno critici vengono ripristinati in background. Con il modello di ripristino semplice, tutti i filegroup di lettura/scrittura devono essere ripristinati insieme al filegroup primario; solo i filegroup di sola lettura possono essere ripristinati separatamente. Con i modelli di ripristino completo o con registrazione in blocco, ogni filegroup può essere reso disponibile indipendentemente dopo l'applicazione dei log delle transazioni.

Modello di recupero Comportamento di ripristino a pezzi
Semplice Il filegroup primario e tutti i filegroup di lettura-scrittura vengono ripristinati insieme. I filegroup di sola lettura vengono ripristinati separatamente.
Registrazione completa/in blocco Ogni filegroup viene ripristinato in modo indipendente a livello di filegroup.

Esempio di modello di ripristino completo: ripristinare prima il filegroup primario per portare online il database, quindi ripristinare i filegroup secondari mentre il database rimane operativo:

-- Stage 1: Restore primary filegroup (database comes online)
RESTORE DATABASE AdventureWorks
FILEGROUP = 'PRIMARY'
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH PARTIAL, NORECOVERY;

RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log1.trn'
WITH RECOVERY;
GO

-- Stage 2: Restore secondary filegroup (database stays online)
RESTORE DATABASE AdventureWorks
FILEGROUP = 'HistoricalData'
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY;

RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log1.trn'
WITH RECOVERY;
GO

Esempio di modello di recupero semplice:

-- Restore primary with all read-write filegroups
RESTORE DATABASE AdventureWorks
FILEGROUP = 'PRIMARY'
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH PARTIAL, RECOVERY;

-- Restore read-only filegroup separately
RESTORE DATABASE AdventureWorks
FILEGROUP = 'ReadOnlyArchive'
FROM DISK = 'C:\Backups\AdventureWorks_ReadOnly.bak'
WITH RECOVERY;
GO

9.9 Ripristino tramite comandi T-SQL

Script di ripristino completo con rilocazione dei file:

RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks.bak'
WITH MOVE 'AdventureWorks_Data' TO 'D:\Data\AdventureWorks.mdf',
     MOVE 'AdventureWorks_Log' TO 'E:\Logs\AdventureWorks.ldf',
     REPLACE,
     STATS = 10;
GO

9.10 Verifica dell'integrità del backup prima del ripristino

Verificare la validità del backup senza ripristinare:

RESTORE VERIFYONLY
FROM DISK = 'C:\Backups\AdventureWorks.bak';
GO

Questo comando verifica che il set di backup sia completo e leggibile senza dover effettivamente ripristinare il database.

10 SQL Server Procedure consigliate per il backup

10.1 Sviluppo di una strategia di backup

10.1.1 Valutazione dei requisiti aziendali

Prima di implementare i backup, valutare:

  • Criticità dei dati: Quanto sono importanti questi dati per le operazioni?
  • Frequenza di modifica: Con quale frequenza cambiano i dati?
  • Dimensione del database: Quanto è grande il database?
  • Risorse disponibili: Quale spazio di archiviazione e larghezza di banda sono disponibili?
  • Esigenze di conformità: Quali norme bisogna seguire?

10.1.2 Definizione di RTO e RPO

Obiettivo temporale di ripristino (RTO): Tempo di inattività massimo accettabile. Determina la rapidità con cui è necessario ripristinare le operazioni.

Obiettivo del punto di ripristino (RPO): Perdita massima accettabile di dati. Determina la frequenza di backup.

Requisito RTO/RPO Strategia di backup consigliata
RPO: Ore, RTO: Ore Registro completo giornaliero + registro delle transazioni ogni 1-2 ore
RPO: minuti, RTO: ore Backup giornalieri completi + log ogni 15-30 minuti
RPO: Quasi zero, RTO: Minuti Gruppi di disponibilità sempre attivi + frequenti backup dei log
RPO: Giorni, RTO: Giorni Settimanale completo + differenziale giornaliero

10.2 Creazione di una pianificazione di backup

10.2.1 Raccomandazioni sulla frequenza

Tipica pianificazione di backup per database di produzione:

  • Backup completi: Settimanale (domenica sera durante la bassa attività)
  • Backup differenziali: Ogni giorno (ogni notte)
  • Backup del registro delle transazioni: Ogni 15-30 minuti durante l'orario lavorativo
  • Backup di sola copia: Secondo necessità per test o sviluppo

10.2.2 Bilanciamento tra prestazioni e protezione

Quando si pianifica, tenere in considerazione questi fattori:

  • Orari non di punta: Eseguire backup completi durante i periodi di bassa attività
  • Impatto sulle risorse: La compressione riduce l'I/O ma aumenta l'utilizzo della CPU
  • Larghezza di banda di rete: Pianificare i backup di rete quando il traffico è basso
  • Finestre di backup: Assicurarsi che i backup siano completati prima dell'orario lavorativo

10.3 Procedure consigliate per l'archiviazione dei backup

10.3.1 Archiviazione in loco vs. fuori sede

Backup in loco:

  • Tempi di backup e ripristino più rapidi
  • Costi inferiori per l'accesso ad alta frequenza
  • Vulnerabile ai disastri locali
  • Ideale per scenari di recupero rapido

Backup fuori sede:

  • Protezione da disastri specifici del sito
  • Conformità ai requisiti di ridondanza geografica
  • Tempi di ripristino più lenti
  • Essenziale per il ripristino dopo un disastro

10.3.2 Opzioni di backup su cloud

Vantaggi dell'archiviazione cloud:

  • Archiviazione BLOB di Azure: Native SQL Server integrazione, conveniente per accessi poco frequenti
  • Amazon S3: Livelli di stoccaggio altamente durevoli e flessibili
  • Archiviazione cloud di Google: Prezzi competitivi, disponibilità globale

10.3.3 Criteri di conservazione dei backup

Politica di conservazione dei campioni:

  • Conservare backup giornalieri per 7 giorni
  • Mantenere backup settimanali per 4 settimane
  • Conservare backup mensili per 12 mesi
  • Conservare backup annuali per 7 anni (conformità)

10.4 Compressione e crittografia del backup

Vantaggi della compressione:

  • Riduce le dimensioni del file di backup del 50-70%
  • Riduce il tempo di backup
  • Riduce i costi di stoccaggio
  • Riduce la larghezza di banda della rete per i backup remoti

Buone pratiche di crittografia:

  • Crittografare sempre i backup contenenti dati sensibili
  • Utilizza la crittografia AES a 256 bit
  • Gestione sicura dei certificati o delle chiavi
  • Documentare le chiavi di crittografia e conservarle separatamente

10.5 Test e verifica dei backup

10.5.1 Test di ripristino regolari

Eseguire il test delle procedure di ripristino trimestralmente o mensilmente:

  1. Ripristinare i backup in un ambiente di prova
  2. Verificare l'integrità e la completezza dei dati
  3. Controllare la funzionalità dell'applicazione
  4. Tempo di ripristino del documento (convalida RTO)
  5. Identificare e risolvere eventuali problemi

10.5.2 Utilizzo di RESTORE VERIFYONLY

Automatizza la convalida del backup:

-- Verify backup integrity
RESTORE VERIFYONLY
FROM DISK = 'C:\Backups\AdventureWorks.bak'
WITH CHECKSUM;
GO

Eseguire la verifica subito dopo il completamento del backup o come parte della manutenzione programmata.

10.6 Automazione e monitoraggio del backup

10.6.1 SQL Server Lavori da agente

Crea processi di backup automatizzati:

  1. Espandere SQL Server AgenteLink Esterno in SSMS
  2. Fare clic con Offerte di lavoro e seleziona Nuovo lavoro
  3. Assegna un nome al processo (ad esempio, "Backup completo giornaliero")
  4. Aggiungere un step con comandi di backup T-SQL
  5. Creare un Programma per il tempo di esecuzione
  6. Configurazione Notifiche per successo/fallimento

10.6.2 Piani di manutenzione

SQL Server I piani di manutenzione forniscono un'interfaccia visiva per l'automazione del backup:

  1. Accedere a Management -> Piani di manutenzione
  2. Fare clic con il tasto destro e selezionare Procedura guidata del piano di manutenzione
  3. Seleziona le attività di backup da automatizzare
  4. Configurare la pianificazione e le opzioni di backup
  5. Impostare la segnalazione e la registrazione

10.6.3 Avvisi e notifiche di backup

Configura le notifiche e-mail:

  • Imposta Database Mail in SQL Server
  • Crea avvisi per errori di backup
  • Monitorare la cronologia dei processi di backup
  • Inviare report riepilogativi agli amministratori

10.7 Documentazione e pianificazione del ripristino di emergenza

Mantenere una documentazione completa:

  • Pianificazione del backup: Quando e cosa viene sottoposto a backup
  • Politiche di conservazione: Per quanto tempo vengono conservati i backup
  • Luoghi di stoccaggio: Dove vengono archiviati i backup
  • Procedure di ripristino: Istruzioni di recupero passo dopo passo
  • Informazioni di contatto: Personale chiave e fornitori
  • Risultati del test di recupero: Risultati dei test documentati

11. Avanzate SQL Server Scenari di backup

11.1 Backup di database molto grandi (VLDB)

11.1.1 Strategie di file e filegroup

Per database di dimensioni superiori a diverse centinaia di gigabyte:

  • Separare i dati di sola lettura e di lettura-scrittura in filegroup diversi
  • Eseguire il backup dei filegroup di sola lettura raramente
  • Concentrare i backup frequenti sui filegroup attivi
  • Utilizzare backup a livello di file per un controllo granulare

Esempio di backup del file:

-- Back up specific file
BACKUP DATABASE LargeDB 
FILE = 'LargeDB_Data1'
TO DISK = 'C:\Backups\LargeDB_File1.bak'
WITH COMPRESSION;
GO

11.1.2 Ottimizzazione delle prestazioni di backup

Migliorare le prestazioni del backup VLDB:

  • Backup a strisce: Scrivere su più file contemporaneamente
  • Compressione: Ridurre i requisiti di I/O e di archiviazione
  • Più dispositivi di backup: Parallelizzare le operazioni di backup
  • Archiviazione veloce: Utilizzare SSD per lo staging del backup
  • Conteggio buffer: Aumenta l'opzione BUFFERCOUNT
  • Dimensione massima del trasferimento: Ottimizza l'impostazione MAXTRANSFERSIZE
-- Optimized VLDB backup
BACKUP DATABASE LargeDB
TO DISK = 'C:\Backups\LargeDB_1.bak',
   DISK = 'D:\Backups\LargeDB_2.bak',
   DISK = 'E:\Backups\LargeDB_3.bak'
WITH COMPRESSION,
     BUFFERCOUNT = 100,
     MAXTRANSFERSIZE = 4194304;
GO

11.2 Backup nei gruppi di disponibilità Always On

I gruppi di disponibilità Always On distribuiscono il carico di backup tra le repliche:

  • Configurare le preferenze di backup (primario, secondario o qualsiasi replica)
  • Trasferisci i backup alle repliche secondarie per ridurre il carico di lavoro primario
  • Utilizzare backup COPY_ONLY su repliche secondarie
  • Monitorare le impostazioni di priorità del backup
-- Check backup preferences
SELECT 
    ag.name AS AvailabilityGroup,
    ar.replica_server_name,
    ar.backup_priority
FROM sys.availability_replicas ar
INNER JOIN sys.availability_groups ag ON ar.group_id = ag.group_id;
GO

11.3 Backup per il mirroring del database

Negli scenari di mirroring del database:

  • Eseguire regolarmente il backup del database principale
  • I backup del registro delle transazioni sono essenziali per il mirroring
  • Il database mirror è in stato di RIPRISTINO (non è possibile eseguire il backup direttamente)
  • Valutare il backup dello specchio dopo il failover

11.4 Backup su Azure Blob Storage

SQL Server è possibile eseguire il backup direttamente su Azure Blob Storage:

  1. Crea un account di archiviazione di Azure
  2. Crea SQL Server credenziali per l'autenticazione di Azure
  3. Utilizzare la sintassi URL per la destinazione del backup
-- Create credential for Azure
CREATE CREDENTIAL [https://mystorageaccount.blob.core.windows.net/backups]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'your_SAS_token';
GO

-- Backup to Azure
BACKUP DATABASE AdventureWorks
TO URL = 'https://mystorageaccount.blob.core.windows.net/backups/AdventureWorks.bak'
WITH COMPRESSION,
     STATS = 10;
GO

11.5 Backup su URL

Vantaggi del backup su URL:

  • Capacità di archiviazione cloud illimitata
  • Ridondanza geografica gestita automaticamente
  • Modello di prezzo con pagamento in base al consumo
  • Non è richiesto spazio su disco locale
  • Supporta fino a 64 URL per backup (striping)

11.6 Backup a strisce per le prestazioni

I backup a strisce suddividono i dati su più file per un I/O più rapido:

-- Striped backup to 4 files
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AW_Stripe1.bak',
   DISK = 'D:\Backups\AW_Stripe2.bak',
   DISK = 'E:\Backups\AW_Stripe3.bak',
   DISK = 'F:\Backups\AW_Stripe4.bak'
WITH COMPRESSION, FORMAT;
GO

Nota: per il ripristino sono necessari tutti i file Stripe. La mancanza di un file rende il backup inutilizzabile.

12. Risoluzione Dei Problemi SQL Server Problemi di backup

12.1 Errori comuni di backup e soluzioni

Errore: "Errore del sistema operativo 5: accesso negato"

  • causa: SQL Server l'account di servizio non ha autorizzazioni
  • Soluzione: Concedi i permessi di scrittura a SQL Server account di servizio sulla cartella di backup

Errore: "Impossibile aprire il dispositivo di backup... Errore del dispositivo o dispositivo offline"

  • causa: Percorso non valido o condivisione di rete non disponibile
  • Soluzione: Verificare che il percorso esista, controllare la connettività di rete, assicurarsi che lo spazio su disco sia sufficiente

Errore: "Spazio insufficiente sul disco"

  • causa: Spazio su disco insufficiente per il backup
  • Soluzione: Liberare spazio su disco, utilizzare la compressione, eseguire il backup in una posizione diversa

Errore: "Database in uso. Il database è utilizzato da altri utenti"

  • causa: Connessioni attive durante il ripristino
  • Soluzione: Utilizzare l'opzione WITH REPLACE o disconnettere prima gli utenti

12.2 Problemi di prestazioni di backup

Diagnosticare i backup lenti:

  • Controllare le prestazioni di I/O del disco utilizzando performance Monitor
  • Monitora l'avanzamento del backup con l'opzione STATISTICHE
  • Review SQL Server registro degli errori per i colli di bottiglia
  • Considerare la compressione per ridurre l'I/O
  • Utilizzare backup a strisce su più dischi

Query per monitorare l'avanzamento del backup:

SELECT 
    session_id,
    command,
    percent_complete,
    CAST(((DATEDIFF(s,start_time,GetDate()))/3600) as varchar) + ' hour(s), '
    + CAST((DATEDIFF(s,start_time,GetDate())%3600)/60 as varchar) + 'min, '
    + CAST((DATEDIFF(s,start_time,GetDate())%60) as varchar) + ' sec' as running_time,
    CAST((estimated_completion_time/3600000) as varchar) + ' hour(s), '
    + CAST((estimated_completion_time %3600000)/60000 as varchar) + 'min, '
    + CAST((estimated_completion_time %60000)/1000 as varchar) + ' sec' as est_time_to_go,
    dateadd(second,estimated_completion_time/1000, getdate()) as est_completion_time
FROM sys.dm_exec_requests 
WHERE command LIKE 'BACKUP%';
GO

12.3 Problemi di spazio e archiviazione

Prevenire problemi di archiviazione:

  • Implementare politiche di conservazione: Elimina automaticamente i vecchi backup
  • Usa compressione: Ridurre le dimensioni del file di backup del 50-70%
  • Archivia in un luogo di archiviazione più economico: Sposta i vecchi backup nell'archivio di archiviazione
  • Monitorare lo spazio su disco: Imposta avvisi per spazio su disco insufficiente
  • Stima delle dimensioni del backup: Calcolare la dimensione prevista prima di eseguire il backup

Stima delle dimensioni del backup:

-- Estimate full backup size
EXEC sp_spaceused;
GO

12.4 Problemi di autorizzazione e accesso

Autorizzazioni richieste per i backup:

  • DATABASE DI BACKUP autorizzazione
  • db_backupoperator appartenenza al ruolo
  • sysadmin ruolo del server (per tutte le operazioni di backup)

Concedi autorizzazioni di backup:

-- Grant backup permission to user
GRANT BACKUP DATABASE TO [BackupUser];
GRANT BACKUP LOG TO [BackupUser];
GO

-- Add user to backup operator role
ALTER ROLE db_backupoperator ADD MEMBER [BackupUser];
GO

12.5 File di backup corrotti

Rileva e gestisci i backup corrotti:

Verificare l'integrità del backup:

RESTORE VERIFYONLY 
FROM DISK = 'C:\Backups\AdventureWorks.bak'
WITH CHECKSUM;
GO

Abilita CHECKSUM per i backup futuri:

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
WITH CHECKSUM, INIT;
GO

Strategie di prevenzione:

  • Utilizzare sempre l'opzione CHECKSUM durante il backup
  • Verificare i backup subito dopo la creazione
  • Il test ripristina regolarmente
  • Conservare i backup su un archivio affidabile
  • Mantenere più copie di backup

12.6 Recuperare i dati dai file di backup danneggiati

Se i file di backup sono danneggiati e si desidera comunque recuperare i dati da essi, è possibile utilizzare strumenti di terze parti come DataNumen SQL Recovery, come sotto:

  1. Inizio DataNumen SQL Recovery.
  2. Selezionare il file di backup danneggiato come file di origine modificando il filtro in "Tutti i file (*.*)":
    Selezionare il file di backup danneggiato (*.bak) come file sorgente da recuperare.
  3. Se necessario, impostare il file di output .MDF.
  4. Fai clic su "Avvia ripristino" e segui le istruzioni per ripristinare il database.
  5. Dopo il processo di ripristino, verrà visualizzato un nuovo database di ripristino in SQL Server che contiene tutti i dati recuperati.

Usa il  DataNumen SQL Recovery per recuperare i dati dal corrotto SQL Server file di backup (*.bak).

13 SQL Server Sicurezza di backup

13.1 Protezione dei file di backup

Proteggi i file di backup da accessi non autorizzati:

  • Permessi del file system: Limitare l'accesso solo agli amministratori autorizzati
  • Sicurezza della rete: Utilizzare protocolli sicuri per i backup di rete
  • Sicurezza fisica: Conservare i supporti di backup in luoghi sicuri
  • Registrazione degli accessi: Controlla l'accesso al file di backup

13.2 Opzioni di crittografia

SQL Server supporta la crittografia trasparente dei backup:

Crea certificato per la crittografia:

-- Create master key
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'StrongP@ssw0rd!';
GO

-- Create certificate
CREATE CERTIFICATE BackupCertificate
WITH SUBJECT = 'Database Backup Certificate',
EXPIRY_DATE = '2026-12-31';
GO

Backup crittografato:

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Encrypted.bak'
WITH COMPRESSION,
     ENCRYPTION (
         ALGORITHM = AES_256,
         SERVER CERTIFICATE = BackupCertificate
     );
GO

Importante: eseguire il backup del certificato e della chiave privata separatamente. Senza di essi, i backup crittografati non possono essere ripristinati.

-- Backup certificate
BACKUP CERTIFICATE BackupCertificate
TO FILE = 'C:\Certificates\BackupCertificate.cer'
WITH PRIVATE KEY (
    FILE = 'C:\Certificates\BackupCertificate.key',
    ENCRYPTION BY PASSWORD = 'C3rt!f!c@t3P@ss'
);
GO

13.3 Controllo degli accessi e permessi

Implementare il principio del privilegio minimo:

  • Concedi autorizzazioni di backup solo agli account necessari
  • Utilizzare account separati per le operazioni di backup e ripristino
  • Evitare di utilizzare l'account sa per i backup
  • Controllare regolarmente le autorizzazioni di backup
  • Rimuovere i permessi quando non sono più necessari

13.4 Considerazioni sulla conformità

Rispettare i requisiti normativi:

  • GDPR: Crittografare i backup contenenti dati personali, implementare policy di conservazione
  • HIPAA: Crittografare le PHI nei backup, controllare l'accesso, mantenere i percorsi di controllo
  • PCI-DSS: Crittografare i backup dei dati dei titolari di carta, proteggere l'archiviazione dei backup
  • SOX: Mantenere l'integrità del backup e le politiche di conservazione dei documenti

14. Monitoraggio e manutenzione delle operazioni di backup

14.1 Monitoraggio della cronologia dei backup

SQL Server memorizza la cronologia dei backup nel database msdb:

-- View recent backup history
SELECT 
    bks.database_name,
    bks.backup_start_date,
    bks.backup_finish_date,
    CASE bks.type
        WHEN 'D' THEN 'Full'
        WHEN 'I' THEN 'Differential'
        WHEN 'L' THEN 'Log'
        ELSE 'Other'
    END AS backup_type,
    bks.backup_size / 1024 / 1024 AS backup_size_mb,
    bkmf.physical_device_name
FROM msdb.dbo.backupset bks
INNER JOIN msdb.dbo.backupmediafamily bkmf ON bks.media_set_id = bkmf.media_set_id
WHERE bks.backup_start_date >= DATEADD(DAY, -7, GETDATE())
ORDER BY bks.backup_start_date DESC;
GO

Trova database senza backup recenti:

SELECT 
    d.name AS database_name,
    MAX(bs.backup_finish_date) AS last_backup_date,
    DATEDIFF(DAY, MAX(bs.backup_finish_date), GETDATE()) AS days_since_last_backup
FROM sys.databases d
LEFT JOIN msdb.dbo.backupset bs ON d.name = bs.database_name
WHERE d.database_id > 4  -- Exclude system databases
GROUP BY d.name
HAVING MAX(bs.backup_finish_date) < DATEADD(DAY, -7, GETDATE())
    OR MAX(bs.backup_finish_date) IS NULL
ORDER BY last_backup_date;
GO

14.2 Utilizzo SQL Server Report

SQL Server Management Studio include report di backup integrati:

  1. Fare clic con il pulsante destro del mouse sul database in Esplora oggetti
  2. Seleziona Report -> Rapporti standard
  3. Scegli tra i report disponibili:
    • Eventi di backup e ripristino
    • Tutti i backup
    • Stato di spedizione del registro delle transazioni

14.3 Strumenti di monitoraggio di terze parti

Soluzioni di monitoraggio commerciale:

  • SQL Sentry: Monitoraggio e allerta completi
  • Monitoraggio SQL di Redgate: Monitoraggio e diagnostica in tempo reale
  • Analizzatore delle prestazioni del database SolarWinds: Monitoraggio delle prestazioni e del backup
  • Idera SQL Diagnostic Manager: Convalida del backup e avvisi

14.4 Controlli di integrità del backup

Creare una procedura di controllo sanitario:

-- Backup health check procedure
CREATE PROCEDURE sp_BackupHealthCheck
AS
BEGIN
    -- Check for databases without recent full backup
    SELECT 
        'Missing Recent Full Backup' AS issue,
        d.name AS database_name,
        ISNULL(CAST(MAX(bs.backup_finish_date) AS VARCHAR), 'Never') AS last_backup
    FROM sys.databases d
    LEFT JOIN msdb.dbo.backupset bs 
        ON d.name = bs.database_name AND bs.type = 'D'
    WHERE d.database_id > 4
    GROUP BY d.name
    HAVING MAX(bs.backup_finish_date) < DATEADD(DAY, -7, GETDATE()) OR MAX(bs.backup_finish_date) IS NULL; -- Check for failed backup jobs SELECT 'Failed Backup Job' AS issue, j.name AS job_name, jh.run_date, jh.run_time, jh.message FROM msdb.dbo.sysjobs j INNER JOIN msdb.dbo.sysjobhistory jh ON j.job_id = jh.job_id WHERE jh.run_status = 0 -- Failed AND jh.step_id = 0 AND jh.run_date >= CONVERT(INT, CONVERT(VARCHAR, GETDATE()-7, 112))
        AND j.name LIKE '%backup%';
END
GO

15 SQL Server Domande frequenti sul backup

15.1 Con quale frequenza dovrei eseguire il backup? SQL Server?

La frequenza del backup dipende dal Recovery Point Objective (RPO):

  • Database di produzione critici: Registrazione settimanale completa, giornaliera differenziale, ogni 15-30 minuti
  • Database di produzione standard: Registrazione settimanale completa, giornaliera differenziale, ogni 1-2 ore
  • Database di sviluppo: Giornaliero o settimanale completo
  • Database di sola lettura: Completo dopo ogni modifica dei dati

15.2 Qual è la differenza tra backup completo e differenziale?

Un backup completo copia l'intero database, mentre un backup differenziale cattura solo le modifiche apportate dall'ultimo backup completo. I backup differenziali sono più piccoli e veloci, ma richiedono il backup completo di base per il ripristino.

15.3 Posso effettuare il backup? SQL Server Mentre è in esecuzione?

Sì, SQL Server supporta i backup online. Gli utenti possono continuare a lavorare durante le operazioni di backup. SQL Server utilizza il registro delle transazioni per mantenere la coerenza, assicurando che i backup siano validi anche in caso di modifiche simultanee.

15.4 Quanto tempo dura SQL Server Backup?

La durata del backup varia in base a:

  • Dimensione del database: I database più grandi richiedono più tempo
  • Tipo di backup: I backup completi richiedono più tempo
  • Compressione: Può aumentare il tempo della CPU ma ridurre la durata complessiva
  • Velocità di archiviazione: Gli SSD sono significativamente più veloci degli HDD
  • Carico del server: Un'attività più elevata rallenta i backup

Intervalli tipici: un database da 10 GB potrebbe richiedere dai 5 ai 15 minuti per un backup completo con compressione su hardware moderno.

15.5 Dove dovrei conservare SQL Server Backup?

Buona pratica: seguire la regola 3-2-1:

  • 3 copie dei tuoi dati
  • 2 diversi tipi di archiviazione (ad esempio, disco e nastro/cloud)
  • 1 copia fuori sede

Luoghi consigliati:

  • Disco locale per un rapido ripristino
  • Archiviazione di rete per la gestione centralizzata
  • Archiviazione cloud (Azure, AWS) per il ripristino di emergenza

15.6 Che cos'è l'estensione del file .bak?

L'estensione .bak è l'estensione di file predefinita per SQL Server file di backup. È una convenzione, non un requisito – SQL Server I backup funzionano con qualsiasi estensione di file. Tuttavia, l'utilizzo di .bak rende i file di backup facilmente identificabili ed è una pratica standard del settore.

15.7 Come eseguire il backup SQL Server su unità di rete?

Per eseguire il backup su un'unità di rete:

  1. Garantire SQL Server l'account di servizio ha i permessi di scrittura sulla condivisione di rete
  2. Utilizzare il percorso UNC nel comando di backup: \\ServerName\ShareName\BackupFile.bak
  3. Testare la connettività prima di pianificare backup automatici
BACKUP DATABASE AdventureWorks
TO DISK = '\\BackupServer\SQLBackups\AdventureWorks.bak'
WITH COMPRESSION, INIT;
GO

15.8 Posso comprimere SQL Server Backup?

Sì, SQL Server supporta la compressione nativa del backup (Enterprise Edition o Standard Edition a partire da SQL Server 2016 SP1). La compressione in genere riduce le dimensioni del backup del 50-70% e spesso diminuisce il tempo di backup riducendo l'I/O, sebbene aumenti l'utilizzo della CPU.

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
WITH COMPRESSION;
GO

16. CONCLUSIONE

16.1 takeaway chiave

Efficace SQL Server Le strategie di backup proteggono i tuoi dati e garantiscono la continuità aziendale. Tieni a mente questi punti essenziali:

  • Comprendere i tipi di backup: Scegli i tipi di backup appropriati (completo, differenziale, registro delle transazioni) in base ai tuoi requisiti di ripristino
  • Selezionare il modello di recupero appropriato: Recupero completo per dati critici, semplice per database di sviluppo
  • Implementare la pianificazione del backup: I backup completi regolari combinati con backup differenziali e di registro riducono al minimo la perdita di dati
  • Procedure di ripristino di prova: I backup sono preziosi solo se possono essere ripristinati con successo
  • Automatizzare e monitorare: Usa il SQL Server Agenti, piani di manutenzione e strumenti di monitoraggio
  • Backup sicuri: Crittografa i dati sensibili e controlla l'accesso ai file di backup
  • Conservare copie fuori sede: Proteggiti dai disastri che interessano l'intero sito con l'archiviazione cloud o remota
  • Documenta tutto: Mantenere una documentazione chiara delle procedure di backup e ripristino

16.2 Passaggi successivi e risorse

Per migliorare il tuo SQL Server implementazione del backup:

  • Valuta la tua attuale strategia di backup rispetto alle migliori pratiche
  • Calcola i tuoi requisiti RTO e RPO
  • Test delle procedure di ripristino su sistemi non di produzione
  • Rivedere e aggiornare regolarmente le pianificazioni dei backup
  • Implementare il monitoraggio e gli avvisi automatizzati
  • Formare i membri del team sulle procedure di ripristino

Risorse addizionali:

  • Microsoft SQL Server Documentazione: Guida ufficiale al backup e al ripristino
  • SQL Server forum della community di backup: condividi esperienze e soluzioni
  • Certificazioni professionali: Microsoft Certified: Azure Database Administrator Associate

16.3 Strumenti e soluzioni consigliati

In base a diversi scenari:

Piccole imprese:

  • Native SQL Server backup con pianificazione SQL Server Lavori da agente
  • SQLBackupAndFTP per l'integrazione cloud
  • Backup di Azure per SQL Server

Medie imprese:

  • SQL Server Piani di manutenzione
  • Strumenti di terze parti come Redgate SQL Backup Pro
  • Veeam Backup per SQL Server

Grandi imprese:

  • Quest LiteSpeed ​​per la massima compressione
  • Commvault o Veritas NetBackup per la gestione dei backup aziendali
  • Gruppi di disponibilità sempre attivi per elevata disponibilità

SQL Server Il backup è fondamentale per l'amministrazione del database. Con una pianificazione, un'implementazione e un test adeguati, puoi garantire che i tuoi dati rimangano protetti e recuperabili quando necessario. Inizia oggi stesso ad implementare queste best practice per proteggere i tuoi dati. SQL Server banche dati.


L'autore

Yuan Sheng è un amministratore di database senior (DBA) con oltre 10 anni di esperienza in SQL Server ambienti e gestione di database aziendali. Ha risolto con successo centinaia di scenari di ripristino di database in aziende di servizi finanziari, sanitari e manifatturiere.

Yuan è specializzato in SQL Server Ripristino di database, soluzioni ad alta disponibilità e ottimizzazione delle prestazioni. La sua vasta esperienza pratica include la gestione di database multi-terabyte, l'implementazione di gruppi di disponibilità Always On e lo sviluppo di strategie di backup e ripristino automatizzate per sistemi aziendali mission-critical.

Grazie alla sua competenza tecnica e al suo approccio pratico, Yuan si concentra sulla creazione di guide complete che aiutano gli amministratori di database e i professionisti IT a risolvere problemi complessi SQL Server sfide in modo efficiente. Si mantiene aggiornato con le ultime SQL Server versioni e le tecnologie di database in continua evoluzione di Microsoft, testando regolarmente gli scenari di ripristino per garantire che le sue raccomandazioni riflettano le migliori pratiche del mondo reale.

Hai domande su SQL Server recupero o hai bisogno di ulteriore assistenza per la risoluzione dei problemi del database? Yuan accoglie feedback e suggerimenti per migliorare queste risorse tecniche.

Condividi ora: