Partage via


MSSQLSERVER_3056

S’applique à : SQL Server

Détails

Attribut Valeur
Nom du produit SQL Server
ID de l’événement 3056
Source de l’événement MSSQLSERVER
Composant SQLEngine
Nom symbolique DMPDB_INVALID_FSDATA
Texte du message L'opération de sauvegarde a détecté un fichier imprévu dans un conteneur FILESTREAM. La sauvegarde va continuer et inclure le fichier '%ls'.

Explication

L’erreur 3056 est générée si des fichiers existent sous le conteneur FILESTREAM (dossier) qui ne sont pas créés par SQL Server. L’opération de sauvegarde inclut ce fichier, mais cela entraîne un état incohérent des composants filestream dans la base de données.

Avertissement

Le conteneur FILESTREAM est un dossier géré par SQL Server. Ne pas ajouter ou supprimer de fichiers dans le dossier FILESTREAM

Action de l’utilisateur

Le message d’erreur inclut le nom du fichier inattendu. Examinez la façon dont ce fichier s’est terminé dans ce dossier.

  1. Arrêtez vos sauvegardes et assurez-vous que les sauvegardes précédentes pour cette base de données ne sont pas remplacées ou perdues

  2. Exécutez un CHECKB DBCC complet sur la base de données pour laquelle la sauvegarde a échoué avec l’erreur 3056. Ne pas utiliser avec physical_only

  3. Passez en revue minutieusement la sortie DBCC CHECKB ; des erreurs peuvent être détectées pendant différentes phases et être des centaines de lignes à part pour les mêmes objets

    • Les dernières lignes de sortie CHECKDB donnent un nombre résumé d’erreurs. Vérifiez que vous avez localisé le message individuel pour chacune des erreurs comptées
    • Trouvez-vous une erreur similaire à celle-ci en bas : CHECKDB found 1 allocation errors and 1 consistency errors in database 'AG_Filestream'.
  4. Si la ou les seules erreurs signalées sont 7908 ou 7906, vous pouvez localiser les fichiers réels signalés dans l’erreur. Les erreurs peuvent ressembler à ceci par exemple :

    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.
    

    Remarque

    Il est recommandé de tester ces étapes sur une copie de sauvegarde/test de votre base de données avant de les essayer sur le système de production.

  5. Pour localiser les fichiers, exécutez cette commande pour rechercher le dossier physique du groupe FILESTREAM

    SELECT name, physical_name, state_desc, type_desc 
    FROM sys.database_files
    WHERE type_desc = 'FILESTREAM'
    
  6. Dans l’Explorateur Windows, ouvrez le sous-dossier identifié dans l’erreur 7906 ou 7908 (par exemple \782fc3bb-dc63-4ab8-9de6-e9dfa36454d2)

  7. Recherchez ensuite le fichier identifié dans le message d’erreur (par exemple, NO_USER_FILE_SHOULD_BE_HERE.txt), puis effectuez une copie de ce fichier dans un répertoire temporaire en tant que sauvegarde.

  8. Une fois que vous avez une copie, vous pouvez supprimer le fichier du dossier

  9. Prendre des mesures pour comprendre pourquoi et comment ce ou ces fichiers ont été ajoutés dans ce dossier système et prendre des mesures pour empêcher une occurrence supplémentaire

    • Vérifiez que les autorisations appropriées sont en place pour l’accès utilisateur à ce ou ces dossiers FILESTREAM
    • Comprendre et vérifier qu’aucune application ne crée de fichiers dans le ou les dossiers FILESTREAM
  10. Exécutez une nouvelle DBCC CHECKDB et assurez-vous qu’elle ne génère aucune erreur

  11. S’il existe d’autres erreurs CHECKDB, notamment 7903 7904 7905 7907, il y a eu corruption ou falsification du dossier SQL Server FILESTREAM au-delà de la simple ajout non valide de fichiers étrangers. Cette situation ne peut pas être réparée manuellement

    • Vérifiez votre matériel pour connaître les problèmes et résolvez-les
    • Vérifiez que votre système est protégé contre les programmes malveillants. Notez que les fichiers de données FILESTREAM doivent être exclus de l’analyse logicielle antivirus. Consultez recommandations et recommandations pour améliorer les performances FILESTREAM
    • Ensuite, restaurez à partir d’une sauvegarde de base de données saine

Exécuter DBCC CHECKDB

Si vous exécutez DBCC CHECKDB, il peut signaler l’erreur 7908 ou 7906, mais ne peut pas la réparer.

Restaurer à partir de la sauvegarde

Si le problème n’est pas lié au matériel et qu’une sauvegarde propre connue est disponible, restaurez la base de données à partir de la sauvegarde.