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 unter dem FILESTREAM-Container (Ordner) vorhanden sind, die nicht von SQL Server erstellt werden. Der Sicherungsvorgang enthält diese Datei, aber dies führt zu einem inkonsistenten Zustand der Filestreamkomponenten in der Datenbank.

Warnung

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

Benutzeraktion

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

  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 einen vollständigen DBCC CHECKB für die Datenbank aus, für die die Sicherung mit dem 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 für dieselben Objekte voneinander entfernt sein.

    • Die letzten Zeilen der CHECKDB-Ausgabe enthalten eine Zusammenfassung der Fehleranzahl. Stellen Sie sicher, dass Sie die einzelne Nachricht für jeden der gezählten Fehler gefunden haben.
    • Finden Sie unten einen Ähnlichen Fehler: CHECKDB found 1 allocation errors and 1 consistency errors in database 'AG_Filestream'.
  4. Wenn die einzigen gemeldeten Fehler 7908 oder 7906 sind, können Sie die tatsächlich im Fehler gemeldeten Dateien suchen. Die Fehler können beispielsweise 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 Sicherungs-/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 unter dem 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 kopieren Sie diese Datei als Sicherung in ein temporäres Verzeichnis.

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

  9. Ergreifen Sie Schritte, um zu verstehen, warum und wie diese Datei(en) in diesem Systemordner hinzugefügt wurden, und ergreifen Sie Schritte, um weiteres Vorkommen zu verhindern.

    • Stellen Sie sicher, dass die erforderlichen Berechtigungen für den Benutzerzugriff auf diese FILESTREAM-Ordner vorhanden sind.
    • Verstehen und sicherstellen, dass keine Anwendungen Dateien in den FILESTREAM-Ordnern erstellen
  10. Führen Sie eine neue DBCC CHECKDB aus, und stellen Sie sicher, dass keine Fehler ausgelöst werden.

  11. Wenn es andere CHECKDB-Fehler gibt, einschließlich 7903.7904.7905.7907, wurde SQL Server FILESTREAM-Ordner über das bloße hinzufügen von Fremddateien hinaus beschädigt oder manipuliert. 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 Antivirensoftwareprüfung ausgeschlossen werden sollten. Weitere Informationen finden Sie unter Empfehlungen und Richtlinien zur Verbesserung der FILESTREAM-Leistung.
    • Anschließende Wiederherstellung aus einer fehlerfreien Datenbanksicherung

Ausführen von DBCC CHECKDB

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

Sicherungswiederherstellung

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