Possibili errori relativi ai supporti durante il backup e il ripristino (SQL Server)Possible Media Errors During Backup and Restore (SQL Server)

SQL Server 2017SQL Server 2017 includono un'opzione che permette di recuperare un database anche in presenza di errori. gives you the option of recovering a database despite detected errors. Un importante e nuovo meccanismo di rilevazione degli errori prevede l'utilizzo facoltativo di un checksum del backup, creato durante un'operazione di backup e convalidato durante un'operazione di ripristino.An important new error-detection mechanism is the optional creation of a backup checksum that can be created by a backup operation and validated by a restore operation. È quindi possibile controllare se un'operazione verifica la presenza di errori e se ne deve essere o meno arrestata l'esecuzione quando viene rilevato un errore.You can control whether an operation checks for errors and whether the operation stops or continues on encountering an error. Se un backup contiene un checksum, le istruzioni RESTORE e RESTORE VERIFYONLY verificano la presenza di errori.If a backup contains a backup checksum, RESTORE and RESTORE VERIFYONLY statements can check for errors.

Nota

I backup con mirroring consentono di disporre di un massimo di quattro copie (mirror) di set di supporti, offrendo copie alternative per il recupero in caso di errori che dipendono da supporti danneggiati.Mirrored backups provide up to four copies (mirrors) of a media set, providing alternative copies for recovering from errors caused by damaged media. Per altre informazioni, vedere Set di supporti di backup con mirroring (SQL Server).For more information, see Mirrored Backup Media Sets (SQL Server).

Checksum di backup Backup Checksums

SQL ServerSQL Server sono supportati tre tipi di checksum: della pagine, dei blocchi dei log e del backup. supports three types of checksums: a checksum on pages, a checksum in log blocks, and a backup checksum. Durante la generazione di un checksum del backup, l'istruzione BACKUP verifica che i dati letti dal database siano consistenti con l'eventuale indicazione di checksum o di pagina incompleta presente nel database.When generating a backup checksum, BACKUP verifies that the data read from the database is consistent with any checksum or torn-page indication that is present in the database.

L'istruzione BACKUP consente di eseguire il calcolo facoltativo di un checksum del backup nel flusso del backup stesso. Se in una pagina specifica sono presenti informazioni relative al checksum della pagina o a una pagina incompleta, durante il backup della pagina verrà inoltre verificato lo stato del checksum e della pagina incompleta, nonché l'ID della pagina.The BACKUP statement optionally computes a backup checksum on the backup stream; if page-checksum or torn-page information is present on a given page, when backing up the page, BACKUP also verifies the checksum and torn-page status and the page ID, of the page. Non verranno aggiunti checksum alle pagine durante la creazione di un checksum del backup.When creating a backup checksum, a backup operation does not add any checksums to pages. Il backup delle pagine viene eseguito solo se queste esistono nel database e non implica la modifica delle pagine stesse.Pages are backed up as they exist in the database, and the pages are unmodified by backup.

Le procedure di verifica e creazione dei checksum del backup comportano un certo overhead, pertanto l'utilizzo di questo tipo di checksum può influire negativamente sulle prestazioni,Due to the overhead verifying and generating backup checksums, using backup checksums poses a potential performance impact. interessando sia il carico di lavoro che la velocità effettiva del backup.Both the workload and the backup throughput may be affected. I checksum del backup sono pertanto facoltativi.Therefore, using backup checksums is optional. Quando si decide di generare checksum durante un backup, eseguire un attento monitoraggio dell'overhead della CPU nonché dell'impatto di eventuali carichi di lavoro eseguiti simultaneamente nel sistema.When deciding to generate checksums during a backup, carefully monitor the CPU overhead incurred as well as the impact on any concurrent workload on the system.

L'istruzione BACKUP non modifica mai la pagina di origine sul disco né il contenuto di una pagina.BACKUP never modifies the source page on disk nor the contents of a page.

Quando i checksum di backup sono abilitati, l'operazione di backup esegue i passaggi descritti di seguito:When backup checksums are enabled, a backup operation performs the following steps:

  1. Prima di scrivere una pagina sui supporti di backup, l'operazione di backup verifica le eventuali informazioni esistenti a livello di pagina, ovvero esegue il rilevamento dei checksum della pagina o delle pagine incomplete.Before writing a page to the backup media, the backup operation verifies the page-level information (page checksum or torn page detection), if either exists. Se non esiste alcun tipo di checksum, il backup non può verificare la pagina.If neither exists, backup cannot verify the page. Le pagine non verificate vengono incluse nello stato in cui si trovano, e il relativo contenuto viene aggiunto al checksum complessivo del backup.Unverified the pages are included as is, and their contents are added to the overall backup checksum.

    Se durante la verifica dell'operazione di backup viene rilevato un errore di pagina, il backup non riesce.If the backup operation encounters a page error during verification, the backup fails.

    Nota

    Per ulteriori informazioni sui checksum delle pagine e sul rilevamento delle pagine incomplete, vedere l'opzione PAGE_VERIFY dell'istruzione ALTER DATABASE.For more information about page checksums and torn page detection, see the PAGE_VERIFY option of the ALTER DATABASE statement. Per altre informazioni, vedere Opzioni di ALTER DATABASE SET (Transact-SQL).For more information, see ALTER DATABASE SET Options (Transact-SQL).

  2. Indipendentemente dalla presenza di valori di checksum per la pagina, viene generato un checksum di backup separato per i flussi di backup.Regardless of whether page checksums are present, BACKUP generates a separate backup checksum for the backup streams. Le operazioni di ripristino possono utilizzare facoltativamente il checksum del backup per verificare che il backup non sia danneggiato.Restore operations can optionally use the backup checksum to validate that the backup is not corrupted. Il checksum del backup viene archiviato nei supporti di backup e non nelle pagine del database.The backup checksum is stored on the backup media, not on the database pages. È possibile utilizzare facoltativamente il checksum del backup in fase di ripristino.The backup checksum can optionally be used at restore time.

  3. Il set di backup viene contrassegnato come contenente checksum di backup (nella colonna has_backup_checksums di msdb..backupset).The backup set is flagged as containing backup checksums (in the has_backup_checksums column of msdb..backupset). Per altre informazioni, vedere backupset (Transact-SQL).For more information, see backupset (Transact-SQL).

    Durante un'operazione di ripristino, se nel supporto di backup sono presenti checksum di backup, per impostazione predefinita le istruzioni RESTORE e RESTORE VERIFYONLY verificheranno solo i checksum di backup e delle pagine.During a restore operation, if backup checksums are present on the backup media, by default, both the RESTORE and RESTORE VERIFYONLY statements verify the backup checksums and page checksums. In assenza di un checksum di backup, l'operazione di backup proseguirà senza verifica, in quanto, in tal caso, l'operazione di ripristino non è in grado di verificare in modo affidabile i checksum delle pagine.If there is no backup checksum, either restore operation proceeds without any verification; this is because without a backup checksum, restore cannot reliably verify page checksums.

Risposta a errori di checksum di pagina durante un'operazione di backup o ripristinoResponse to Page Checksum Errors During a Backup or Restore Operation

Per impostazione predefinita, dopo avere rilevato un errore di checksum della pagina, l'operazione BACKUP o RESTORE non riesce e l'operazione RESTORE VERIFYONLY continua.By default, after encountering a page checksum error, a BACKUP or RESTORE operation fails and a RESTORE VERIFYONLY operation continues. Tuttavia, è possibile controllare se un'operazione specificata non riesce sul rilevamento di un errore o continua nel migliore dei modi.However, you can control whether a given operation fails on encountering an error or continues as best it can.

Se un'operazione BACKUP continua dopo aver rilevato errori, l'operazione esegue i passaggi indicati di seguito:If a BACKUP operation continues after encountering errors, the operation performs the following steps:

  1. Contrassegna il set di backup sul supporto come contenente errori e tiene traccia della pagina nella tabella suspect_pages del database msdb.Flags the backup set on the backup media as containing errors and tracks the page in the suspect_pages table in the msdb database. Per altre informazioni, vedere suspect_pages (Transact-SQL).For more information, see suspect_pages (Transact-SQL).

  2. Registra l'errore nel log degli errori di SQL Server.Logs the error in the SQL Server error log.

  3. Contrassegna il set di backup come contenente questo tipo di errore nella colonna is_damaged di msdb.backupset.Marks the backup set as containing this type of error (in the is_damaged column of msdb.backupset). Per altre informazioni, vedere backupset (Transact-SQL).For more information, see backupset (Transact-SQL).

  4. Visualizza un messaggio per indicare che il backup è stato generato correttamente, ma contiene errori di pagina.Issues a message that the backup was successfully generated, but contains page errors.

Per abilitare o disabilitare i checksum per i backupTo enable or disable backup checksums

Vedere ancheSee Also

ALTER DATABASE (Transact-SQL) ALTER DATABASE (Transact-SQL)
BACKUP (Transact-SQL) BACKUP (Transact-SQL)
backupset (Transact-SQL) backupset (Transact-SQL)
Set di supporti di backup con mirroring (SQL Server) Mirrored Backup Media Sets (SQL Server)
RESTORE (Transact-SQL) RESTORE (Transact-SQL)
RESTORE VERIFYONLY (Transact-SQL)RESTORE VERIFYONLY (Transact-SQL)