MSSQLSERVER_3023

Si applica a:SQL Server

Dettagli

Attributo Valore
Nome prodotto SQL Server
ID evento 3023
Origine evento MSSQLSERVER
Componente SQLEngine
Nome simbolico DB_IN_USE_DUMP
Testo del messaggio Le operazioni di backup e di manipolazione di file (ad esempio ALTER DATABASE ADD FILE) e le modifiche alla crittografia eseguite su un database devono essere serializzate. Eseguire nuovamente l'istruzione al termine dell'operazione corrente di backup o manipolazione di file.

Spiegazione

Si tenta di eseguire un comando Backup, compattare o modificare il database in SQL Server e vengono visualizzati i messaggi seguenti:

Messaggio 3023, livello 16, stato 2, riga 1
Le operazioni di backup e di manipolazione di file (ad esempio ALTER DATABASE ADD FILE) e le modifiche alla crittografia eseguite su un database devono essere serializzate. Eseguire nuovamente l'istruzione al termine dell'operazione corrente di backup o manipolazione di file.

Messaggio 3013, livello 16, stato 1, riga 1
Interruzione anomala di BACKUP DATABASE in corso.

Inoltre, il log degli errori di SQL Server contiene messaggi simili ai seguenti:

<Errore di backup datetime> : 3041, gravità: 16, stato: 1.
<Backup datetime> BACKUP non è riuscito a completare il comando BACKUP DATABASE MyDatabase WITH DIFFERENTIAL. Per messaggi più dettagliati, controllare il log dell'applicazione di backup.

Si potrebbe anche notare che questi comandi rilevano wait_type = LCK_M_U e wait_resource = DATABASE: <id> [BULKOP_BACKUP_DB] quando lo stato di questi comandi viene visualizzato dalle varie viste a gestione dinamica (DMV), ad esempio da sys.dm_exec_requests o sys.dm_os_waiting_tasks.

Possibili cause

Esistono diverse regole per le operazioni consentite o non consentite quando è in corso un backup completo del database per un database. Di seguito sono riportati alcuni esempi:

  • È possibile eseguire un solo backup dei dati alla volta (durante un backup completo del database non è possibile eseguire contemporaneamente backup differenziali o incrementali).
  • È possibile eseguire un solo backup del log alla volta, ovvero un backup del log è consentito durante l'esecuzione di un backup completo del database.
  • Non è possibile aggiungere o eliminare file in un database mentre è in corso un backup.
  • Non è possibile compattare i file mentre sono in corso backup del database.
  • Sono consentite modifiche al modello di recupero limitate durante l'esecuzione dei backup.

Quando viene eseguita una di queste operazioni in conflitto, i comandi rileveranno le attese di blocco indicate nella sezione "Spiegazione" seguite dalla ricezione dei messaggi 3023 e 3041.

Azione utente

Esaminare le pianificazioni delle diverse attività di manutenzione del database, quindi modificare le pianificazioni in modo che tali operazioni o comandi non siano in conflitto.

Altre informazioni

SQL Server registra l'ora di inizio e l'ora di fine del backup nel msdb database. È possibile esaminare la cronologia di backup per determinare se era in corso un backup completo del database durante il tentativo di eseguire un backup incrementale, causando pertanto l'errore. Per semplificare questo processo, è possibile usare la query seguente:

select database_name, type, backup_start_date, backup_finish_date
from msdb.dbo.backupset
order by database_name, type, backup_start_date, backup_finish_date
go

È anche possibile usare l'evento User Error Message nella traccia di SQL Profiler o l'evento error_reported negli eventi estesi per ricollegare la segnalazione dei messaggi 3023 all'applicazione che ha avviato il backup o un altro comando di manutenzione.