Teilen über


MSSQLSERVER_3056

Gilt für: SQL Server

Details

attribute Wert
Produktname SQL Server
Ereignis-ID 3056
Ereignisquelle MSSQLSERVER
Komponente SQLEngine
Symbolischer Name DMPDB_INVALID_FSDATA
Meldungstext Beim Sicherungsvorgang wurde eine unerwartete Datei in einem FILESTREAM-Container gefunden. Der Sicherungsvorgang wird unter Einbeziehung der Datei '%ls' fortgesetzt.

Erklärung

Fehler 3056 wird ausgelöst, wenn Dateien im FILESTREAM-Container (Ordner) vorhanden sind, die nicht von SQL Server erstellt werden. Der Sicherungsvorgang enthält diese Datei. Dies führt jedoch zu einem inkonsistenten Zustand der Dateistreamkomponenten in der Datenbank.

Warnung

Der FILESTREAM-Container ist ein ordner, der von SQL Server verwaltet wird. Hinzufügen oder Entfernen von Dateien im FILESTREAM-Ordner

Benutzeraktion

Die Fehlermeldung enthält den Namen der unerwarteten Datei. Untersuchen Sie, wie diese Datei in diesem Ordner endete.

  1. Beenden Sie Ihre Sicherungen, und stellen Sie sicher, dass frühere Sicherungen für diese Datenbank nicht überschrieben oder verloren gehen.

  2. Führen Sie eine vollständige DBCC CHECKB für die Datenbank aus, für die die Sicherung mit Fehler 3056 fehlgeschlagen ist. Verwenden Sie nicht mit physical_only

  3. Überprüfen Sie die DBCC CHECKB-Ausgabe gründlich; Fehler können in verschiedenen Phasen erkannt werden und Hunderte von Zeilen auseinander für dieselben Objekte sein.

    • Die letzten Zeilen der CHECKDB-Ausgabe geben eine Zusammenfassung der Fehler an. Stellen Sie sicher, dass Sie die einzelne Nachricht für jeden der gezählten Fehler gefunden haben.
    • Finden Sie einen Fehler ähnlich wie dieser unten: CHECKDB found 1 allocation errors and 1 consistency errors in database 'AG_Filestream'.
  4. Wenn der einzige gemeldete Fehler 7908 oder 7906 ist, können Sie die tatsächlich im Fehler gemeldeten Dateien suchen. Die Fehler können z. B. wie folgt aussehen:

    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.
    

    Hinweis

    Es wird empfohlen, diese Schritte auf einer Sicherungskopie/Testkopie Ihrer Datenbank zu testen, bevor Sie sie im Produktionssystem versuchen.

  5. Um die Dateien zu suchen, führen Sie diesen Befehl aus, um den physischen Ordner der FILESTREAM-Gruppe zu suchen.

    SELECT name, physical_name, state_desc, type_desc 
    FROM sys.database_files
    WHERE type_desc = 'FILESTREAM'
    
  6. Öffnen Sie im Windows-Explorer den im Fehler 7906 oder 7908 identifizierten Unterordner (z. B. \782fc3bb-dc63-4ab8-9de6-e9dfa36454d2)

  7. Suchen Sie dann die in der Fehlermeldung identifizierte Datei (z. B. NO_USER_FILE_SHOULD_BE_HERE.txt), und erstellen Sie eine Kopie dieser Datei in ein temporäres Verzeichnis als Sicherung.

  8. Nachdem Sie sichergestellt haben, dass Sie eine Kopie haben, können Sie die Datei aus dem Ordner entfernen.

  9. Führen Sie Schritte aus, um zu verstehen, warum und wie diese Dateien in diesem Systemordner hinzugefügt wurden, und ergreifen Sie Schritte, um weitere Vorkommen zu verhindern.

    • Stellen Sie sicher, dass die richtigen Berechtigungen für den Benutzerzugriff auf diesen FILESTREAM-Ordner(n) vorhanden sind.
    • Verstehen und sicherstellen, dass keine Anwendungen Dateien im FILESTREAM-Ordner(n) erstellen
  10. Führen Sie eine neue DBCC CHECKDB aus, und stellen Sie sicher, dass keine Fehler auftreten.

  11. Wenn weitere CHECKDB-Fehler, einschließlich 7903.7904.7905.7907, vorhanden sind, gab es Beschädigungen oder Manipulationen des SQL Server FILESTREAM-Ordners über das bloße ungültige Hinzufügen fremder Dateien hinaus. Diese Situation kann nicht manuell repariert werden

    • Überprüfen Sie Ihre Hardware auf Probleme, und beheben Sie sie.
    • Stellen Sie sicher, dass Ihr System vor Schadsoftware geschützt ist. Beachten Sie, dass FILESTREAM-Datendateien von der Antivirensoftwareüberprüfung ausgeschlossen werden sollten. Siehe Empfehlungen und Richtlinien zur Verbesserung der FILESTREAM-Leistung
    • Stellen Sie dann eine Wiederherstellung aus einer fehlerfreien Datenbanksicherung her

Ausführen von DBCC CHECKDB

Wenn Sie DBCC CHECKDB ausführen, wird möglicherweise Fehler 7908 oder 7906 gemeldet, kann aber nicht repariert werden.

Sicherungswiederherstellung

Wenn das Problem nicht hardwarebezogen ist und eine bekannte saubere Sicherung verfügbar ist, stellen Sie die Datenbank aus der Sicherung wieder her.