MSSQLSERVER_5009
Gilt für: SQL Server
Details
attribute | Wert |
---|---|
Produktname | SQL Server |
Ereignis-ID | 5009 |
Ereignisquelle | MSSQLSERVER |
Komponente | SQLEngine |
Symbolischer Name | ALT_BADDISKS |
Meldungstext | One or more files listed in the statement could not be found or could not be initialized (Mindestens eine in der Anweisung aufgeführte Datei wurde nicht gefunden oder konnte nicht initialisiert werden) |
Erklärung
Dieser Fehler deutet darauf hin, dass Sie einen Dateinamen oder eine Datei-ID im Befehl ALTER DATABASE oder DBCC SHRINK* angegeben haben, die nicht gefunden werden konnte.
Nehmen Sie das folgende Szenario als Beispiel:
- Sie verfügen über eine Microsoft SQL Server-Datenbank, die ein vollständiges oder massenprotokollieren Wiederherstellungsmodell verwendet.
- Sie fügen der Datenbank eine neue Datendatei mit dem Namen db_file1 hinzu.
- Sie legen den Dateityp für die Datei
db_file1
auf „data“ fest. - Sie stellen fest, dass Sie den falschen Dateityp festgelegt haben.
- Sie entfernen die
db_file1
-Datei und sichern das Transaktionsprotokoll für diese Datenbank. - Sie fügen derselben Datenbank eine neue Protokolldatei mit dem Namen db_file1 hinzu.
- Sie versuchen, die Protokolldatei mit dem Namen db_file1 mithilfe der ALTER DATABASE-Anweisung oder mithilfe von SQL Server Management Studio zu entfernen.
In diesem Szenario wird eine Fehlermeldung etwa folgenden Inhalts angezeigt:
Msg 5009, Level 16, State 9, Line 1 One or more files listed in the statement could not be found or could not be initialized. (Meldung 5009, Ebene 16, Status 9, Zeile 1: Mindestens eine in der Anweisung aufgeführte Datei wurde nicht gefunden oder konnte nicht initialisiert werden.)
Mögliche Ursachen
Dieses Problem tritt auf, wenn der logische Name der Datei, die Sie entfernen möchten, in den Systemkatalogtabellen nicht eindeutig ist. Dies ist beispielsweise dann der Fall, wenn die Datei erst in der Datenbank enthalten war, aber dann gelöscht wurde.
Wenn Sie versuchen, eine Datei mit demselben logischen Namen zu entfernen, versucht SQL Server, die gelöschte logische Datei zu entfernen. Dadurch wird eine Fehlermeldung ausgelöst.
Aktion des Benutzers
Führen Sie die folgenden Schritte aus, um dieses Problem zu umgehen.
Hinweis
Wenn Sie wie nachfolgend beschrieben vorgehen, können die Werte der Datei-ID wiederverwendet werden.
Verwenden Sie die Anweisung ALTER DATABASE, um eine neue logische Datei mit einem anderen Namen, aber mit demselben Datentyp zu erstellen. Nennen Sie die logische Datei z. B. wie im folgenden Beispiel gezeigt
different_remove_file_name
anstelle vondb_file1
:ALTER DATABASE [DBNAME] ADD FILE ( NAME = N'different_remove_file_name', FILENAME = N'D:\MSSQL.1\MSSQL\DATA\db_file1.ndf', SIZE = 1MB, MAXSIZE = 1MB)
Hinweis
Sie können Dateinamen und -pfad beliebig festlegen.
Verwenden Sie die ALTER DATABASE-Anweisung, um die logische Datei, die Sie in Schritt 1 erstellt haben, wie im folgenden Beispiel zu entfernen:
ALTER DATABASE [DBNAME] REMOVE FILE [different_remove_file_name]
Erstellen Sie eine Transaktionsprotokollsicherung der Datenbank.
Versuchen Sie noch einmal, die logische Datei mit dem Namen db_file1 zu entfernen.