MSSQLSERVER_3056
Se aplica a: SQL Server
Detalles
Attribute | Valor |
---|---|
Nombre del 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 existen archivos en el contenedor FILESTREAM (carpeta) que SQL Server no crea. 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 este archivo terminó en esta carpeta.
Finalice las copias de seguridad y asegúrese de que las copias de seguridad anteriores de esta base de datos no se sobrescriben ni pierden.
Ejecute un DBCC CHECKB completo en la base de datos para la que se produjo un error en la copia de seguridad con el error 3056. No use con physical_only
Revise la salida DE DBCC CHECKB exhaustivamente; 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'.
Si los únicos errores notificados son 7908 o 7906, puede localizar 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.
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'
En el Explorador de Windows, abra la subcarpeta identificada en el error 7906 o 7908 (por ejemplo\782fc3bb-dc63-4ab8-9de6-e9dfa36454d2)
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.
Una vez que asegúrese de que tiene una copia, puede quitar el archivo de la carpeta.
Siga los pasos necesarios para comprender por qué y cómo se han agregado estos archivos en esta carpeta del sistema y siga los pasos necesarios para evitar más repeticiones.
- Asegúrese de que se han implementado los permisos adecuados para el acceso de los usuarios a estas carpetas FILESTREAM.
- Comprenda y asegúrese de que ninguna aplicación cree archivos en las carpetas FILESTREAM.
Ejecute un nuevo DBCC CHECKDB y asegúrese de que no genera ningún error.
Si hay otros errores CHECKDB, incluidos 7903.7904.7905.7907, se han producido daños o alteraciones en la carpeta FILESTREAM de SQL Server más allá de la mera adición no válida de archivos externos. Esta situación no se puede reparar manualmente
- Compruebe si hay algún problema en el hardware y resuélvalo.
- Asegúrese de que el sistema está protegido contra malware. Tenga en cuenta que los archivos de datos FILESTREAM deben excluirse del examen de software antivirus. Consulte Recomendaciones e instrucciones para mejorar el rendimiento de FILESTREAM.
- A continuación, restaure a partir de una copia de seguridad de base de datos correcta.
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.