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 dans 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. N’ajoutez pas ou ne supprimez pas de fichiers dans le dossier FILESTREAM

Action de l'utilisateur

Le message d’erreur inclut le nom du fichier inattendu. Examinez comment ce fichier s’est retrouvé 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 DBCC CHECKB complet sur la base de données pour laquelle la sauvegarde a échoué avec l’erreur 3056. Ne pas utiliser avec physical_only

  3. Examinez attentivement la sortie DBCC CHECKB ; des erreurs peuvent être détectées au cours de différentes phases et être séparées par des centaines de lignes pour les mêmes objets

    • Les dernières lignes de la sortie CHECKDB donnent un nombre récapitulative d’erreurs. Assurez-vous d’avoir trouvé le message individuel pour chacune des erreurs comptabilisé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 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.
    

    Notes

    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 vérifié que vous avez une copie, vous pouvez supprimer le fichier du dossier

  9. Prenez des mesures pour comprendre pourquoi et comment ce ou ces fichiers ont été ajoutés dans ce dossier système, et prenez des mesures pour empêcher d’autres occurrences

    • 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 les dossiers FILESTREAM
  10. Exécutez une nouvelle DBCC CHECKDB et assurez-vous qu’elle ne génère pas d’erreurs

  11. S’il existe d’autres erreurs CHECKDB, notamment 7903 7904 7905 7907, il y a eu altération ou falsification de SQL Server dossier FILESTREAM au-delà du simple ajout non valide de fichiers étrangers. Cette situation n’est pas réparable manuellement

    • Vérifiez vos problèmes matériels 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 des logiciels antivirus. Consultez Recommandations et recommandations pour améliorer les performances de FILESTREAM
    • Ensuite, restauration à 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