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.
Beenden Sie Ihre Sicherungen, und stellen Sie sicher, dass frühere Sicherungen für diese Datenbank nicht überschrieben oder verloren gehen.
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
Ü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'.
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.
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 im 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 erstellen Sie eine Kopie dieser Datei in ein temporäres Verzeichnis als Sicherung.
Nachdem Sie sichergestellt haben, dass Sie eine Kopie haben, können Sie die Datei aus dem Ordner entfernen.
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
Führen Sie eine neue DBCC CHECKDB aus, und stellen Sie sicher, dass keine Fehler auftreten.
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.