Condividi tramite


Creare un backup completo del database

Si applica a:SQL Server

Questo articolo descrive come creare un backup completo del database in SQL Server usando SQL Server Management Studio, Transact-SQL o PowerShell.

Per altre informazioni, vedere Backup e ripristino di SQL Server con Archiviazione BLOB di Azure e backup di SQL Server nell'URL per Archiviazione BLOB di Azure.

Limitazioni

  • Non è possibile usare l'istruzione BACKUP in una transazione esplicita o implicita.
  • I backup creati da versioni più recenti di SQL Server non possono essere ripristinati nelle versioni precedenti di SQL Server.

Per una panoramica e un approfondimento su concetti e attività di backup, vedere Panoramica del backup (SQL Server) prima di procedere.

Consigli

  • Con l'aumento delle dimensioni del database, i backup completi del database richiedono più tempo e più spazio di archiviazione. Per database di grandi dimensioni, valutare la possibilità di integrare un backup completo del database con una serie di backup di database differenziali.
  • Stimare la dimensione di un backup completo del database utilizzando la stored procedure di sistema sp_spaceused.
  • Per impostazione predefinita, per ogni operazione di backup eseguita in modo corretto viene aggiunta una voce al log degli errori di SQL Server e al registro eventi di sistema. Se si esegue spesso il backup, i messaggi di esito positivo si accumulano rapidamente, causando enormi log degli errori, che rende difficile trovare altri messaggi. In questo caso è possibile eliminare le voci di log di backup usando il flag di traccia 3226 se nessuno degli script dipende da esse. Per altre informazioni, vedere Impostare flag di traccia con DBCC TRACEON.

Sicurezza

TRUSTWORTHY è impostato su OFF in un backup del database. Per informazioni su come impostare su TRUSTWORTHYON, vedere Opzioni ALTER DATABASE SET.

A partire da SQL Server 2012 (11.x), le PASSWORD opzioni e MEDIAPASSWORD non sono disponibili per la creazione di backup. È possibile ripristinare backup creati con password.

Autorizzazioni

Le autorizzazioni BACKUP DATABASE e BACKUP LOG vengono assegnate per impostazione predefinita ai membri del ruolo predefinito del server sysadmin e dei ruoli predefiniti del database db_owner e db_backupoperator.

Eventuali problemi correlati alla proprietà e alle autorizzazioni sul file fisico del dispositivo di backup possono interferire con l'operazione di backup. Il servizio SQL Server deve leggere e scrivere nel dispositivo. L'account con il quale viene eseguito il servizio SQL Server deve avere autorizzazioni di scrittura sul dispositivo di backup. Le autorizzazioni di accesso ai file, tuttavia, non vengono controllate dalla stored procedure sp_addumpdevice che aggiunge una voce per un dispositivo di backup nelle tabelle di sistema. I problemi nel file fisico del dispositivo di backup potrebbero non essere visualizzati fino a quando non viene usato il backup o un tentativo di ripristino.

Usare SQL Server Management Studio

Nota

Quando si specifica un'attività di backup usando SQL Server Management Studio, è possibile generare lo script Transact-SQL BACKUP corrispondente selezionando il pulsante Script e quindi selezionando una destinazione script.

  1. Dopo la connessione all'istanza appropriata del motore di database di SQL Server, in Esplora oggetti espandere l'albero del server.

  2. Espandere Databasee selezionare un database utente o espandere Database di sistema e selezionare un database di sistema.

  3. Fare clic con il pulsante destro del mouse sul database di cui si vuole eseguire il backup, scegliere Attività e quindi selezionare Backup.

  4. Nella finestra di dialogo Backup database il database selezionato viene visualizzato nell'elenco a discesa. È possibile modificare il database in qualsiasi altro database nel server.

  5. Nell'elenco Tipo di backup selezionare un tipo di backup. Il valore predefinito è Full.

    Importante

    È necessario eseguire almeno un backup completo del database prima di poter eseguire un backup differenziale o del log delle transazioni.

  6. In Componente di cui eseguire il backup selezionare Database.

  7. Nella sezione Destinazione esaminare il percorso predefinito per il file di backup (nella cartella ../mssql/data).

    È possibile usare l'elenco Backup per selezionare un dispositivo diverso. Selezionare Aggiungi per aggiungere oggetti di backup e/o destinazioni. Puoi suddividere il set di backup su più file per aumentare la velocità di backup.

    Per rimuovere una destinazione di backup, selezionarla e quindi selezionare Rimuovi. Per visualizzare il contenuto di una destinazione di backup esistente, selezionarlo e quindi selezionare Contenuto.

  8. (Facoltativo) Esaminare le altre impostazioni disponibili nelle pagine Opzioni supporto e Opzioni di backup .

    Per altre informazioni sulle varie opzioni di backup, vedere Backup database (pagina Generale),Backup database (pagina Opzioni supporto) e Backup database (pagina Opzioni di backup) e Backup database (pagina Opzioni di backup).

  9. Selezionare OK per avviare il backup.

  10. Al termine del backup, selezionare OK per chiudere la finestra di dialogo SQL Server Management Studio.

Informazioni aggiuntive

  • Dopo aver creato un backup completo del database, è possibile creare un backup differenziale del database o un backup del log delle transazioni.

  • (Facoltativo) È possibile selezionare la casella di controllo Backup di sola copia per creare un backup di sola copia. Un backup di sola copia è un backup di SQL Server indipendente dalla sequenza di backup convenzionali di SQL Server. Per altre informazioni, vedere Backup di sola copia. Per il tipo di backup Differenziale non è possibile creare un backup di sola copia.

  • L'opzione Sovrascrivi supporti è disabilitata nella pagina Opzioni supporti se si esegue il backup su un URL.

Esempi

Per gli esempi seguenti, creare un database di test con il codice Transact-SQL seguente:

USE [master]
GO

CREATE DATABASE [SQLTestDB]
GO

USE [SQLTestDB]
GO
CREATE TABLE SQLTest
   (
      ID INT NOT NULL PRIMARY KEY,
      c1 VARCHAR(100) NOT NULL,
      dt1 DATETIME NOT NULL DEFAULT getdate()
   );
GO

USE [SQLTestDB]
GO

INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1')
INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2')
INSERT INTO SQLTest (ID, c1) VALUES (3, 'test3')
INSERT INTO SQLTest (ID, c1) VALUES (4, 'test4')
INSERT INTO SQLTest (ID, c1) VALUES (5, 'test5')
GO

SELECT * FROM SQLTest
GO

Un. Backup completo su disco nel percorso predefinito

In questo esempio viene eseguito il backup del SQLTestDB database su disco nel percorso di backup predefinito.

  1. Dopo la connessione all'istanza appropriata del motore di database di SQL Server, in Esplora oggetti espandere l'albero del server.

  2. Espandere i database, fare clic con il pulsante destro del mouse su SQLTestDB, scegliere Attività, quindi selezionare Backup....

  3. Seleziona OK.

  4. Al termine del backup, selezionare OK per chiudere la finestra di dialogo SQL Server Management Studio.

Screenshot che mostra i passaggi per la creazione di un backup.

B. Backup completo su disco in una posizione non predefinita

In questo esempio viene eseguito il backup del SQLTestDB database su disco in un percorso scelto.

  1. Dopo la connessione all'istanza appropriata del motore di database di SQL Server, in Esplora oggetti espandere l'albero del server.

  2. Espandere i database, fare clic con il pulsante destro del mouse su SQLTestDB, scegliere Attività, quindi selezionare Backup....

  3. Nella pagina Generale della sezione Destinazione selezionare Disco nell'elenco Backup fino a .

  4. Selezionare Rimuovi fino a quando non vengono rimossi tutti i file di backup esistenti.

  5. Seleziona Aggiungi. Verrà visualizzata la finestra di dialogo Seleziona destinazione di backup .

  6. Immettere un percorso e un nome file validi nella casella Nome file . Usare .bak come estensione per semplificare la classificazione del file.

  7. Selezionare OK, poi selezionare di nuovo OK per avviare il backup.

  8. Al termine del backup, selezionare OK per chiudere la finestra di dialogo SQL Server Management Studio.

Screenshot che mostra come aggiungere o rimuovere un percorso di backup.

C. Creare un backup crittografato

In questo esempio viene eseguito il backup del SQLTestDB database con crittografia nel percorso di backup predefinito.

  1. Dopo la connessione all'istanza appropriata del motore di database di SQL Server, in Esplora oggetti espandere l'albero del server.

  2. Espandere Database, espandere Database di sistema, fare clic con il pulsante destro del mouse mastersu e quindi scegliere Nuova query per aprire una finestra di query con una connessione al SQLTestDB database.

  3. Eseguire i comandi seguenti per creare una chiave master del database e un certificato all'interno del master database.

    -- Create the master key.
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
    
    -- If the master key already exists, open it in the same session that you create the certificate. (See next step.)
    OPEN MASTER KEY DECRYPTION BY PASSWORD = '<password>'
    
    -- Create the certificate encrypted by the master key.
    CREATE CERTIFICATE MyCertificate
    WITH SUBJECT = 'Backup Cert', EXPIRY_DATE = '20201031';
    
  4. In Esplora oggetti, nel nodo Database, fare clic con il pulsante destro del mouse su SQLTestDB, scegliere Attività e quindi selezionare Backup.

  5. Nella sezione Sovrascrivi supporti della pagina Opzioni multimediali selezionare Backup in un nuovo set di supporti e cancellare tutti i set di backup esistenti.

  6. Nella sezione Crittografia della pagina Opzioni di backup selezionare Crittografa backup.

  7. Nell'elenco Algoritmo selezionare AES 256.

  8. Nell'elenco Certificato o Chiave asimmetrica selezionare MyCertificate.

  9. Seleziona OK.

Screenshot che mostra i passaggi per la creazione di un backup crittografato.

D. Esegui il backup su Azure Blob Storage

Questo esempio crea un backup completo del database di in Archiviazione BLOB di SQLTestDB Azure. L'esempio viene scritto con il presupposto che si abbia già un account di archiviazione con un contenitore BLOB. Nell'esempio viene creata una firma di accesso condiviso. L'esempio ha esito negativo se il contenitore ha una firma di accesso condiviso esistente.

Se non si ha un contenitore di archiviazione BLOB in un account di archiviazione, crearne uno prima di continuare. Vedere Creare un account di archiviazione per utilizzo generico e Creare un contenitore.

  1. Dopo la connessione all'istanza appropriata del motore di database di SQL Server, in Esplora oggetti espandere l'albero del server.

  2. Espandere i database, fare clic con il pulsante destro del mouse su SQLTestDB, scegliere Attività, quindi selezionare Backup....

  3. Nella sezione Destinazione della pagina Generale selezionare URL nell'elenco Backup fino a .

  4. Seleziona Aggiungi. Verrà visualizzata la finestra di dialogo Seleziona destinazione di backup .

  5. Se in precedenza è stato registrato il contenitore di archiviazione di Azure che si vuole usare con SQL Server Management Studio, selezionarlo. In caso contrario, selezionare Nuovo contenitore per registrare un nuovo contenitore.

  6. Nella finestra di dialogo Connetti a una sottoscrizione Microsoft accedere all'account.

  7. Nella casella Seleziona account di archiviazione selezionare l'account di archiviazione.

  8. Nella casella Seleziona contenitore BLOB selezionare il contenitore BLOB.

  9. Nella casella Calendario scadenza criteri di accesso condiviso selezionare una data di scadenza per i criteri di accesso condiviso creati in questo esempio.

  10. Selezionare Crea credenziali per generare una firma di accesso condiviso e le credenziali in SQL Server Management Studio.

  11. Selezionare OK chiudere la finestra di dialogo Connetti a una sottoscrizione Microsoft .

  12. Nella casella File di backup modificare il nome del file di backup se si desidera.

  13. Selezionare OK per chiudere la finestra di dialogo Selezionare una destinazione di backup .

  14. Selezionare OK per avviare il backup.

  15. Al termine del backup, selezionare OK per chiudere la finestra di dialogo SQL Server Management Studio.

Nota

Il backup nell'archiviazione BLOB tramite identità gestite non è attualmente supportato.

Usare Transact-SQL

Creare un backup completo del database eseguendo l'istruzione BACKUP DATABASE , specificando:

  • Il nome del database di cui eseguire il backup.
  • Il dispositivo di backup in cui archiviare il backup completo del database.

La sintassi di base dell'istruzione Transact-SQL per un backup completo del database è la seguente:

BACKUP DATABASE <database>
TO <backup_device> [ , ...n ]
[ WITH <with_options> [ , ...o ] ];
Opzione Descrizione
<database> Database di cui eseguire il backup.
<backup_device> [ , ...n ] Specifica un elenco di dispositivi di backup compresi tra 1 e 64 da usare per l'operazione di backup. È possibile specificare un dispositivo di backup fisico oppure specificare un dispositivo di backup logico corrispondente, se ne è già definito uno. Per specificare un dispositivo di backup fisico, usare l'opzione DISK o TAPE :

{ DISK | TAPE } =physical_backup_device_name

Per altre informazioni, vedere Dispositivi di backup (SQL Server).
WITH <with_options> [ , ...o ] Consente di specificare una o più opzioni, o. Di seguito sono riportate informazioni su alcune delle opzioni di base WITH .

Facoltativamente, specificare una o più WITH opzioni. Di seguito sono descritte alcune opzioni di base WITH . Per informazioni su tutte le WITH opzioni, vedere BACKUP.

Opzioni del set di WITH backup di base:

  • { COMPRESSION | NO_COMPRESSION }. In SQL Server 2008 (10.0.x) Enterprise e versioni successive specifica se la compressione dei backup viene eseguita nel backup, eseguendo l'override del valore predefinito a livello di server.
  • ENCRYPTION (ALGORITMO, CERTIFICATO SERVER | ASYMMETRIC KEY). Solo in SQL Server 2014 o versione successiva specifica l'algoritmo di crittografia da usare e il certificato o la chiave asimmetrica da usare per proteggere la crittografia.
  • DESCRIPTION = { 'text' | @text_variable }. Specifica il testo in formato libero che descrive il set di backup. La stringa può essere composta da un massimo di 255 caratteri.
  • NAME = { backup_set_name | @backup_set_name_var }. Specifica il nome del set di backup. I nomi possono essere composti da un massimo di 128 caratteri. Se NAME non viene specificato, è vuoto.

Per impostazione predefinita, BACKUP accoda il backup a un set di supporti esistente, conservando i set di backup esistenti. Per specificare in modo esplicito questa configurazione, usare l'opzione NOINIT . Per informazioni sull'aggiunta a set di backup esistenti, vedere Set di supporti, famiglie di supporti e set di backup (SQL Server).

Per formattare il supporto di backup, usare l'opzione FORMAT :

FORMAT [ , MEDIANAME = { media_name | @media_name_variable } ] [ , MEDIADESCRIPTION = { text | @text_variable } ]

Usare la FORMAT clausola quando si usano supporti per la prima volta o quando si desidera sovrascrivere tutti i dati esistenti. Facoltativamente, assegnare al nuovo supporto un nome e una descrizione.

Importante

Prestare attenzione quando si usa la FORMAT clausola dell'istruzione BACKUP perché questa opzione elimina definitivamente tutti i backup archiviati in precedenza nel supporto di backup.

Esempi

Per gli esempi seguenti, creare un database di test con il codice Transact-SQL seguente:

USE [master]
GO

CREATE DATABASE [SQLTestDB]
GO

USE [SQLTestDB]
GO
CREATE TABLE SQLTest (
   ID INT NOT NULL PRIMARY KEY,
   c1 VARCHAR(100) NOT NULL,
   dt1 DATETIME NOT NULL DEFAULT GETDATE()
)
GO

USE [SQLTestDB]
GO

INSERT INTO SQLTest (ID, c1) VALUES (1, 'test1')
INSERT INTO SQLTest (ID, c1) VALUES (2, 'test2')
INSERT INTO SQLTest (ID, c1) VALUES (3, 'test3')
INSERT INTO SQLTest (ID, c1) VALUES (4, 'test4')
INSERT INTO SQLTest (ID, c1) VALUES (5, 'test5')
GO

SELECT * FROM SQLTest
GO

Un. Effettuare un backup su un'unità disco

Nell'esempio seguente viene eseguito il backup del database completo SQLTestDB su disco. FORMAT Usa per creare un nuovo set di supporti.

USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
TO DISK = 'c:\tmp\SQLTestDB.bak'
   WITH FORMAT,
      MEDIANAME = 'SQLServerBackups',
      NAME = 'Full Backup of SQLTestDB';
GO

B. Backup su un dispositivo nastro

Nell'esempio seguente viene eseguito il backup del database completo SQLTestDB su nastro. Aggiunge il backup ai backup precedenti.

USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
   TO TAPE = '\\.\Tape0'
   WITH NOINIT,
      NAME = 'Full Backup of SQLTestDB';
GO

C. Effettua il backup su un dispositivo logico a nastro

Nell'esempio seguente viene creato un dispositivo di backup logico per un'unità nastro. L'esempio esegue quindi il backup del database completo SQLTestDB nel dispositivo.

-- Create a logical backup device,
-- SQLTestDB_Bak_Tape, for tape device \\.\tape0.
USE master;
GO
EXEC sp_addumpdevice 'tape', 'SQLTestDB_Bak_Tape', '\\.\tape0'; USE SQLTestDB;
GO
BACKUP DATABASE SQLTestDB
   TO SQLTestDB_Bak_Tape
   WITH FORMAT,
      MEDIANAME = 'SQLTestDB_Bak_Tape',
      MEDIADESCRIPTION = '\\.\tape0',
      NAME = 'Full Backup of SQLTestDB';
GO

Utilizzare PowerShell

Usare il Backup-SqlDatabase cmdlet . Per indicare in modo esplicito un backup completo del database, specificare il parametro con il -BackupAction relativo valore predefinito, Database. Questo parametro è facoltativo per i backup completi di database.

Nota

Questi esempi richiedono il modulo SqlServer. Per determinare se è installato, eseguire Get-Module -Name SqlServer. Per installarlo, eseguire Install-Module -Name SqlServer in una sessione di amministratore di PowerShell.

Per altre informazioni, vedere Provider PowerShell per SQL Server.

Importante

Se si apre una finestra di PowerShell da SQL Server Management Studio (SSMS) per connettersi a un'istanza di SQL Server, è possibile omettere la parte delle credenziali perché le credenziali in SSMS vengono usate automaticamente per stabilire la connessione tra PowerShell e l'istanza di SQL Server.

Esempi

Un. Backup completo (locale)

L'esempio seguente consente di creare un backup di database completo del database di <myDatabase> nel percorso di backup predefinito dell'istanza del server Computer\Instance. Facoltativamente, in questo esempio viene -BackupAction Databasespecificato .

Per esempi di sintassi completi, vedere Backup-SqlDatabase.

$credential = Get-Credential

Backup-SqlDatabase -ServerInstance Computer[\Instance] -Database <myDatabase> -BackupAction Database -Credential $credential

B. Backup completo in Azure

Nell'esempio seguente viene creato un backup completo del database <myDatabase> nell'istanza <myServer> in Archiviazione BLOB. Sono stati creati criteri di accesso memorizzati con diritti di lettura, scrittura e elenco. Le credenziali di SQL Server, https://<myStorageAccount>.blob.core.windows.net/<myContainer>, sono state create usando una firma di accesso condiviso associata ai criteri di accesso archiviati. Il comando usa il $backupFile parametro per specificare il percorso (URL) e il nome del file di backup.

$credential = Get-Credential
$container = 'https://<myStorageAccount>blob.core.windows.net/<myContainer>'
$fileName = '<myDatabase>.bak'
$server = '<myServer>'
$database = '<myDatabase>'
$backupFile = $container + '/' + $fileName

Backup-SqlDatabase -ServerInstance $server -Database $database -BackupFile $backupFile -Credential $credential