MSSQLSERVER_3056

Se aplica a:SQL Server

Detalles

Atributo Value
Nombre de producto SQL Server
Id. de evento 3056
Origen de eventos MSSQLSERVER
Componente SQLEngine
Nombre simbólico DMPDB_INVALID_FSDATA
Texto del mensaje La operación de copia de seguridad ha detectado un archivo inesperado en un contenedor de FILESTREAM. La operación de copia de seguridad continuará e incluirá el archivo '%ls'.

Explicación

Se produce el error 3056 si los archivos existen en el contenedor filestream (carpeta) que no se crean mediante SQL Server. La operación de copia de seguridad incluirá ese archivo, pero esto provocará un estado incoherente de los componentes de secuencia de archivos de la base de datos.

Advertencia

El contenedor FILESTREAM es una carpeta administrada por SQL Server. No agregar ni quitar archivos en la carpeta FILESTREAM

Acción del usuario

El mensaje de error incluye el nombre del archivo inesperado. Investigue cómo terminó este archivo en esta carpeta.

  1. Finalice las copias de seguridad y asegúrese de que las copias de seguridad anteriores de esta base de datos no se sobrescriben ni se pierden.

  2. Ejecute un DBCC CHECKB completo en la base de datos para la que la copia de seguridad produjo el error 3056. No use con physical_only

  3. Revise exhaustivamente la salida DE DBCC CHECKB; es posible que se detecten errores durante distintas fases y que estén separados por cientos de líneas para los mismos objetos.

    • Las últimas líneas de salida CHECKDB proporcionarán un recuento de resumen de errores. Asegúrese de que ha localizado el mensaje individual para cada uno de los errores contados.
    • ¿Encuentra un error similar al siguiente en la parte inferior: CHECKDB found 1 allocation errors and 1 consistency errors in database 'AG_Filestream'.
  4. Si los únicos errores notificados son 7908 o 7906, puede encontrar los archivos reales notificados en el error. Los errores pueden tener este aspecto, por ejemplo:

    Msg 7906, Level 16, State 1, Line 8
    Database error: The file "\782fc3bb-dc63-4ab8-9de6-e9dfa36454d2\NO_USER_FILE_SHOULD_BE_HERE.txt" is not a valid FILESTREAM file in container ID 65537.
    Msg 7908, Level 16, State 1, Line 8
    Table error: The file "\782fc3bb-dc63-4ab8-9de6-e9dfa36454d2\NO_USER_FILE_SHOULD_BE_HERE.txt" in the rowset directory ID 3068163f-7398-4ae7-843c-67672e29c37e is not a valid FILESTREAM file in container ID    65537.
    

    Nota

    Se recomienda probar estos pasos en una copia de seguridad o prueba de la base de datos antes de intentarlos en el sistema de producción.

  5. Para buscar los archivos, ejecute este comando para buscar la carpeta física del grupo FILESTREAM.

    SELECT name, physical_name, state_desc, type_desc 
    FROM sys.database_files
    WHERE type_desc = 'FILESTREAM'
    
  6. En el Explorador de Windows, abra la subcarpeta identificada en el error 7906 o 7908 (por ejemplo\782fc3bb-dc63-4ab8-9de6-e9dfa36454d2)

  7. A continuación, busque el archivo identificado en el mensaje de error (por ejemplo, NO_USER_FILE_SHOULD_BE_HERE.txt) y realice una copia de este archivo en un directorio temporal como copia de seguridad.

  8. Una vez que haya asegurado de que tiene una copia, puede quitar el archivo de la carpeta.

  9. Siga los pasos para comprender por qué y cómo se han agregado estos archivos en esta carpeta del sistema y siga los pasos necesarios para evitar que se produzcan más.

    • Asegúrese de que se han implementado los permisos adecuados para el acceso de los usuarios a estas carpetas FILESTREAM.
    • Comprender y asegurarse de que ninguna aplicación está creando archivos en las carpetas FILESTREAM
  10. Ejecute un nuevo DBCC CHECKDB y asegúrese de que no genera ningún error.

  11. Si hay otros errores CHECKDB, incluidos 7903.7904.7905.7907, ha habido daños o alteraciones de SQL Server carpeta FILESTREAM más allá de la mera adición no válida de archivos externos. Esta situación no se puede reparar manualmente

    • Compruebe el hardware si hay algún problema y solucione los problemas.
    • Asegúrese de que el sistema está protegido contra malware. Tenga en cuenta que los archivos de datos FILESTREAM deben excluirse del análisis de software antivirus. Consulte Recomendaciones e instrucciones para mejorar el rendimiento de FILESTREAM.
    • Después, restaure a partir de una copia de seguridad de base de datos en buen estado.

Ejecute DBCC CHECKDB

Si ejecuta DBCC CHECKDB, puede notificar el error 7908 o 7906, pero no puede repararlo.

Restaure mediante la copia de seguridad

Si el problema no está relacionado con el hardware y hay disponible una copia de seguridad limpia conocida, restaure la base de datos a partir de la copia de seguridad.