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.
Beenden Sie Ihre Sicherungen, und stellen Sie sicher, dass frühere Sicherungen für diese Datenbank nicht überschrieben oder verloren gehen.
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
Ü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'.
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.
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'
Öffnen Sie im Windows-Explorer den unter dem Fehler 7906 oder 7908 identifizierten Unterordner (z. B. \782fc3bb-dc63-4ab8-9de6-e9dfa36454d2).
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.
Nachdem Sie sichergestellt haben, dass Sie über eine Kopie verfügen, können Sie die Datei aus dem Ordner entfernen.
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
Führen Sie eine neue DBCC CHECKDB aus, und stellen Sie sicher, dass keine Fehler ausgelöst werden.
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.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für