Freigeben über


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.

  1. 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 von db_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.

  2. 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]
    
  3. Erstellen Sie eine Transaktionsprotokollsicherung der Datenbank.

  4. Versuchen Sie noch einmal, die logische Datei mit dem Namen db_file1 zu entfernen.