Los mensajes de error se pueden grabar en el registro de errores de SQL Server después de ejecutar un comando de DBCC en SQL Server


Síntomas


Ejecute uno de los siguientes comandos de DBCC en Microsoft SQL Server:
  • DBCC CHECKDB
  • DBCC CHECKALLOC
  • DBCC CHECKTABLE
  • DBCC CHECKCATALOG
  • DBCC CHECKFILEGROUP
Después, puede que se registren mensajes de error similares a los siguientes en el registro de errores de SQL Server:
2006-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.2006-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.2006-09-01 17:36:31.76 spid53      Error: 17053, Severity: 16, State: 1.2006-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.2006-09-01 17:36:31.76 spid53      Error: 17053, Severity: 16, State: 1.2006-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.2006-09-01 17:36:31.77 spid53      Error: 17053, Severity: 16, State: 1.2006-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.2006-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.2006-09-01 17:36:31.90 spid53      Error: 17053, Severity: 16, State: 1.2006-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.2006-09-01 17:36:31.90 spid53      Error: 17053, Severity: 16, State: 1.2006-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.2006-09-01 17:36:32.30 spid54      Error: 926, Severity: 21, State: 6.2006-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. 

Causa


En SQL Server, los comandos DBCC usan instantáneas internas de la base de datos de solo lectura. Estas instantáneas de base de datos se crean en la misma unidad donde se encuentran los archivos de datos de la base de datos correspondiente. Las instantáneas de base de datos aumentan en proporción a la cantidad de datos modificados en la base de datos en la que se ejecutan los comandos de DBCC. Si la actividad transaccional continúa en esta base de datos, las instantáneas de la base de datos que se crean mediante comandos de DBCC pueden experimentar problemas de espacio en disco. Debido a que los archivos de instantánea de la base de datos y los archivos de datos reales residen en la misma unidad de disco, ambos conjuntos de archivos compiten por espacio en el disco. En este caso, se da preferencia a las transacciones de la aplicación o de usuario. La instantánea interna de la base de datos utilizada por DBCC está marcada como sospechosa. Por lo tanto, los comandos de DBCC experimentan errores y no pueden finalizar. Espacio en disco es una de las razones por las que puede fallar la escritura en la instantánea de la base de datos interna. Otras razones, como los códigos de error del sistema operativo 1450 y 665 también pueden contribuir a problemas similares y representar la instantánea interna de la base de datos en un estado sospechoso.

Estado


Este comportamiento es una característica del diseño de la aplicación.

Más información


La siguiente información importante se aplica a los mensajes de error que se mencionan en la sección "síntomas":
  • Estos mensajes de error provienen de identificadores de proceso de Active Server (SPID) diferentes. SPID 54 es el identificador de sesión que ejecuta el comando DBCC. SPID 53 es el identificador de sesión que ejecuta una transacción de usuario.
  • Estos mensajes de error indican las transacciones de reenvío y la reversión de las transacciones. Estos mensajes se generan durante la fase inicial de la ejecución de comandos DBCC. Cuando ejecuta un comando DBCC, el comando DBCC primero intenta crear una instantánea interna. Cuando se crea la instantánea, la recuperación de la base de datos se realiza en esta instantánea para que la instantánea se contraiga a un estado coherente. Los mensajes de error reflejan esta actividad.
  • El mensaje de error 926 indica que la base de datos está marcada como sospechosa. Este mensaje de error se refiere realmente a la instantánea interna y no a la base de datos real. El estado de la base de datos es "conectado" y la base de datos es funcional.
  • El mensaje de error 17053 contiene el nombre de las secuencias alternativas del sistema de archivos NTFS que se usan para la instantánea interna. Este mensaje de error indica la causa real del problema.
  • La instantánea de la base de datos interna usa el mismo nombre que la base de datos real. Por lo tanto, estos mensajes de error contienen el nombre de la base de datos.
  • Aunque el mensaje de registro de errores indica que DBCC CHECKDB se ha completado, debe considerarse una finalización anómala. Debe volver a ejecutar el comando DBCC CHECKDB para permitir que se ejecute hasta que se complete para tener acceso a la coherencia de la base de datos. En estas situaciones, consulte la salida del comando DBCC CHECKDB devuelto al cliente para comprender qué objetos se han comprobado y se han notificado de forma limpia.
Para obtener más información sobre este problema, vea los siguientes temas en los libros en línea de SQL Server:
  • Uso de instantánea de la base de datos interna de DBCC
  • Descripción de los tamaños de archivo dispersos en instantáneas de bases de datos
Siga los pasos que se describen en estos temas para evitar problemas de uso del espacio. Después de corregir cualquier problema, vuelva a ejecutar los comandos de DBCC. Además de los mensajes de error que se mencionan en la sección "síntomas", es posible que reciba el siguiente mensaje de error:
Msj 5128, nivel 17, estado 2, línea 6Write al archivo disperso ' E:\CreateFile\ProductionData.mdf: MSSQL_DBCC11 ' falló debido a falta de espacio en disco.
En este caso, la aplicación cliente que ejecuta los comandos de DBCC tendrá las siguientes entradas en el conjunto de resultados de la aplicación:
Resultados de DBCC para ' ProductionData '. CHECKDB encontró 0 errores de asignación y 0 errores de coherencia en la base de datos ' ProductionData '. MSG 926, Level 21, State 6, line 1Database ' ProductionData ' no se puede abrir. Se marcó como sospechoso por recuperación. Para obtener más información, consulte el ErrorLog de SQL Server. Mensaje 0, nivel 20, estado 0, línea 0A se produjo un error grave en el comando actual. Los resultados, si los hay, se deben descartar.
Si no se pudo crear la instantánea, recibirá mensajes de error similares a los siguientes en la aplicación cliente que emite los comandos de DBCC:
Msj 1823, nivel 16, estado 1, línea 1A la instantánea de la base de datos no se puede crear porque no se pudo iniciar. Msj 7928, nivel 16, estado 1, línea 1El instantánea de la base de datos para las comprobaciones en línea no se pudo crear. O bien el motivo se indica en un error anterior o uno de los volúmenes subyacentes no admite archivos dispersos o secuencias alternativas. Intento de obtener acceso exclusivo para ejecutar las comprobaciones sin conexión. Msj 5030, nivel 16, estado 12, línea 1El base de datos no se pudo bloquear de forma exclusiva para realizar la operación. MSG 7926, nivel 16, estado 1, line 1Check instrucción anulada. No se pudo comprobar la base de datos porque no se pudo crear una instantánea de la base de datos y no se pudo bloquear la base de datos o la tabla. Vea libros en línea para obtener detalles sobre cuándo se espera este comportamiento y qué soluciones alternativas existen. Consulte también los errores anteriores para obtener más información. Msj 5106, nivel 17, estado 2, línea 1Write al archivo disperso ' E:\Data\ LogFUllTest_Data. MDF: MSSQL_DBCC10 ', debido a falta de espacio en disco.
Si la instantánea interna de la base de datos se ejecuta en 1450 o 665, esta es una secuencia típica que verá en el registro de errores de 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.