Gli errori 17053 e 926 possono essere registrati nel log degli errori dopo aver eseguito un comando DBCC in SQL Server

Questo articolo introduce l'errore 17053 e l'errore 926 che può essere segnalato quando si esegue un DBCC comando in SQL Server e fornisce la procedura di risoluzione degli errori del sistema operativo sottostante 112, 665 o 1450.

Versione originale del prodotto: SQL Server
Numero KB originale: 926070

Sintomi

In Microsoft SQL Server eseguire uno dei comandi seguentiDBCC:

  • DBCC CHECKDB
  • DBCC CHECKALLOC
  • DBCC CHECKTABLE
  • DBCC CHECKCATALOG
  • DBCC CHECKFILEGROUP

Il comando potrebbe non riuscire ed è possibile che vengano visualizzati gli errori 17053, 926 e altri messaggi di errore nell'output dell'applicazione client e nel log degli errori SQL Server.

Errori

L'errore 926 indica che il database è contrassegnato come sospetto. Questo messaggio di errore fa riferimento allo snapshot interno e non al database effettivo. Lo stato del database è online e il database è funzionante.

L'errore 17053 è un errore SQL Server usato per rivelare l'errore del sistema operativo sottostante. Contiene il nome dei file usati per lo snapshot interno. Il messaggio di errore indica il vero motivo del problema.

Le sezioni seguenti mostrano i messaggi di errore dettagliati che è possibile ottenere. Per altre informazioni su questi messaggi di errore, vedere la sezione Altre informazioni .

Errore del sistema operativo 112: spazio su disco insufficiente

I messaggi di errore che mostrano l'errore 112 del sistema operativo sottostante" "Spazio insufficiente sul disco" potrebbero essere registrati nel log degli errori SQL Server.

2022-09-01 17:33:24.48 spid54 35 transactions rolled forward in database 'ProductionData' (11). This is an informational message only. No user action is required.
2022-09-01 17:35:39.16 spid54 4 transactions rolled back in database 'ProductionData' (11). This is an informational message only. No user action is required.
2022-09-01 17:36:31.76 spid53 Error: 17053, Severity: 16, State: 1.
2022-09-01 17:36:31.76 spid53 E:\SQLData\ProductionData.mdf:MSSQL_DBCC11: Operating system error 112(There is not enough space on the disk.) encountered.
2022-09-01 17:36:31.76 spid53 Error: 17053, Severity: 16, State: 1.
2022-09-01 17:36:31.76 spid53 E:\SQLData\ProductionData.mdf:MSSQL_DBCC11: Operating system error 112(There is not enough space on the disk.) encountered.
2022-09-01 17:36:31.77 spid53 Error: 17053, Severity: 16, State: 1.
2022-09-01 17:36:31.77 spid53 E:\SQLData\ProductionData.mdf:MSSQL_DBCC11: Operating system error 112(There is not enough space on the disk.) encountered.
2022-09-01 17:36:31.80 spid54 DBCC CHECKDB (ProductionData) executed by DomainName\UserName found 0 errors and repaired 0 errors. Elapsed time: 0 hours 3 minutes 19 seconds.
2022-09-01 17:36:31.90 spid53 Error: 17053, Severity: 16, State: 1.
2022-09-01 17:36:31.90 spid53 E:\SQLData\ProductionData.mdf:MSSQL_DBCC11: Operating system error 112(There is not enough space on the disk.) encountered.
2022-09-01 17:36:31.90 spid53 Error: 17053, Severity: 16, State: 1.
2022-09-01 17:36:31.90 spid53 E:\SQLData\ProductionData.mdf:MSSQL_DBCC11: Operating system error 112(There is not enough space on the disk.) encountered.
2022-09-01 17:36:32.30 spid54 Error: 926, Severity: 21, State: 6.
2022-09-01 17:36:32.30 spid54 Database 'ProductionData' cannot be opened. It has been marked SUSPECT by recovery. See the SQL Server errorlog for more information.

In alcuni casi, è possibile che venga visualizzato il messaggio di errore seguente:

Msg 5128, Level 17, State 2, Line 6
Write to sparse file `E:\CreateFile\ProductionData.mdf:MSSQL_DBCC11` failed due to lack of disk space.

In questi casi, l'applicazione client che esegue i DBCC comandi può mostrare le voci seguenti nel set di risultati dell'applicazione:

DBCC results for 'ProductionData'.
CHECKDB found 0 allocation errors and 0 consistency errors in database 'ProductionData'.
Msg 926, Level 21, State 6, Line 1
Database 'ProductionData' cannot be opened. It has been marked SUSPECT by recovery. See the SQL Server errorlog for more information.
Msg 0, Level 20, State 0, Line 0
A severe error occurred on the current command. The results, if any, should be discarded.

Se non è stato possibile creare lo snapshot interno del database usato dai DBCC comandi, nell'applicazione client vengono visualizzati gli errori seguenti che eseguono i DBCC comandi:

Msg 1823, Level 16, State 1, Line 1
A database snapshot cannot be created because it failed to start.

Msg 7928, Level 16, State 1, Line 1
The database snapshot for online checks could not be created. Either the reason is given in a previous error or one of the underlying volumes does not support sparse files or alternate streams. Attempting to get exclusive access to run checks offline.

Msg 5030, Level 16, State 12, Line 1
The database could not be exclusively locked to perform the operation.

Msg 7926, Level 16, State 1, Line 1
Check statement aborted. The database could not be checked as a database snapshot could not be created and the database or table could not be locked. See Books Online for details of when this behavior is expected and what workarounds exist. Also see previous errors for more details.

Msg 5106, Level 17, State 2, Line 1
Write to sparse file 'E:\Data\LogFUllTest_Data.mdf:MSSQL_DBCC10' failed due to lack of disk space.

Errore del sistema operativo 665 - Limitazione del file system, errore del sistema operativo 1450 - Risorse di sistema insufficienti

Se lo snapshot interno del database si verifica con errori 1450 o 665, è possibile notare una sequenza tipica nel log degli errori SQL Server:

2008-05-21 13:03:45.67 spid500 272 transactions rolled forward in database 'MYDATABASE' (12). This is an informational message only. No user action is required.
2008-05-21 13:03:45.84 spid500 2 transactions rolled back in database 'MYDATABASE' (12). This is an informational message only. No user action is required.
2008-05-21 13:03:46.97 spid500 Recovery completed for database MYDATABASE (database ID 12) in 5 second(s) (analysis 602 ms, redo 3954 ms, undo 105 ms.) This is an informational message only. No user action is required.
2008-05-21 13:36:48.25 spid480 The operating system returned error 665(The requested operation could not be completed due to a file system limitation) to SQL Server during a write at offset 0x00001b35138000 in file 'I:\MSSQL\DATA\mscrm_data1.ndf:MSSQL_DBCC12'.
2008-05-21 13:36:48.26 spid480 Error: 17053, Severity: 16, State: 1.
2008-05-21 13:36:48.26 spid480 C:\MSSQL\DATA\MyDatabase.mdf:MSSQL_DBCC12: Operating system error 665(The requested operation could not be completed due to a file system limitation) encountered.
2008-05-21 13:36:48.27 spid480 The operating system returned error 665(The requested operation could not be completed due to a file system limitation) to SQL Server during a write at offset 0x00001b35138000 in file 'C:\MSSQL\DATA\MyDatabase.mdf:MSSQL_DBCC12'.
2008-05-21 13:36:48.27 spid480 Error: 17053, Severity: 16, State: 1.
2008-05-21 13:36:48.27 spid480 C:\MSSQL\DATA\MyDatabase.mdf:MSSQL_DBCC12: Operating system error 665(The requested operation could not be completed due to a file system limitation) encountered.
2008-05-21 13:36:48.37 spid480 The operating system returned error 665(The requested operation could not be completed due to a file system limitation) to SQL Server during a write at offset 0x00001b35138000 in file 'C:\MSSQL\DATA\MyDatabase.mdf:MSSQL_DBCC12'.
2008-05-21 13:36:48.37 spid480 Error: 17053, Severity: 16, State: 1.
2008-05-21 13:36:48.37 spid480 C:\MSSQL\DATA\MyDatabase.mdf:MSSQL_DBCC12: Operating system error 665(The requested operation could not be completed due to a file system limitation) encountered.
2008-05-21 13:36:48.37 spid500 DBCC CHECKDB (MYDATABASE) executed by DomainName\UserName found 0 errors and repaired 0 errors. Elapsed time: 0 hours 33 minutes 16 seconds. Internal database snapshot has split point LSN = 0000759c:002547bc:0040 and first LSN = 0000759c:0023696d:0049. This is an informational message only. No user action is required.

Ulteriori informazioni

  • Questi messaggi di errore provengono da diverse sessioni attive (SPID). SPID 54 è l'ID sessione che esegue il DBCC comando. SPID 53 è l'ID sessione che esegue una transazione utente.
  • Questi messaggi di errore indicano il roll forward delle transazioni e il rollback delle transazioni. I messaggi vengono generati durante la fase iniziale dell'esecuzione del DBCC comando. Quando si esegue un DBCC comando, il DBCC comando tenta prima di tutto di creare uno snapshot interno. Quando viene creato lo snapshot, viene eseguito il ripristino del database su questo snapshot per portare lo snapshot in uno stato coerente. I messaggi di errore riflettono questa attività.
  • Lo snapshot del database interno usa lo stesso nome del database effettivo. Di conseguenza, questi messaggi di errore contengono il nome del database.
  • Anche se il messaggio di log degli errori indica che DBCC CHECKDB è stato completato, deve essere considerato come una terminazione anomala. È consigliabile eseguire di nuovo il comando per consentirne l'esecuzione DBCC CHECKDB fino a quando non viene completato per valutare la coerenza del database. In queste situazioni, fare riferimento all'output del DBCC CHECKDB comando inviato al client per comprendere quali oggetti sono stati controllati e segnalati puliti.

Causa

In SQL Server i DBCC comandi usano snapshot di database interni di sola lettura. Per altre informazioni, vedere Come DBCC CHECKDB crea un database snapshot interno a partire da SQL Server 2014. Questi snapshot di database vengono creati nella stessa unità in cui si trovano i file di dati del database corrispondenti. Gli snapshot del database aumentano in proporzione alle modifiche dei dati nel database in cui DBCC vengono eseguiti i comandi. Se l'attività transazionale continua nel database utente, gli snapshot interni del database creati dai DBCC comandi possono continuare a crescere e possono riscontrare problemi di spazio su disco. Vedere Requisiti di spazio su disco per gli snapshot del database. Poiché i file di snapshot del database e i file di dati effettivi si trovano nella stessa unità disco, entrambi i set di file sono in competizione per lo spazio su disco. In questo caso, alle transazioni dell'applicazione o alle transazioni utente viene data la preferenza. Lo snapshot del database interno usato da DBCC è contrassegnato come sospetto. Di conseguenza, i DBCC comandi generano errori e non possono essere completati.

Le scritture nello snapshot interno del database potrebbero non riuscire a causa di spazio su disco insufficiente. Anche altri problemi, ad esempio l'errore del sistema operativo 665, possono causare problemi simili ed eseguire il rendering dello snapshot interno del database in uno stato sospetto.

Risoluzione

Usare la sezione di risoluzione che corrisponde a uno dei problemi che potrebbero essere stati risolti:

Errore del sistema operativo 112

Per risolvere l'errore 112 del sistema operativo generato all'interno SQL Server'errore 17053, usare una o più di queste alternative:

  • Liberare spazio su disco nell'unità in cui si trova il database in modo che DBCC CHECKDB possa creare uno snapshot del database.
  • Eseguire DBCC CHECKDBWITH TABLOCK per impedire la creazione di uno snapshot interno.
  • Usare una tecnologia di replica, ad esempio gruppi di disponibilità, log shipping, backup/ripristino o replica di SQL Server e creare una copia del database in un altro server. Eseguire quindi il DBCC CHECKDB comando su tale server.

Errori del sistema operativo 665 e 1450

Per risolvere gli errori del sistema operativo 665 o 1450 generati all'interno dell'errore 17053, usare una o più soluzioni fornite negli errori del sistema operativo 665 e 1450 segnalati per i file SQL Server.