MSSQLSERVER_5009

platí pro:SQL Server

Podrobnosti

Attribute Value
Název produktu SQL Server
ID události 5009
Zdroj události MSSQLSERVER
Součást SQLEngine
Symbolický název ALT_BADDISKS
Text zprávy Jeden nebo více souborů uvedených ve výpovědi nebylo možné najít nebo inicializovat

Vysvětlení

Tato chyba naznačuje, že jste v příkazu DBCC SHRINK* zadali název souboru nebo fileID ALTER DATABASE , které nebylo možné vyřešit.

Zvažte následující scénář:

  • Máte databáze Microsoft SQL Serveru, která používá kompletní nebo hromadně logovaný model obnovy.
  • Do databáze přidáte nový datový soubor, který se jmenuje db_file1 .
  • Nastavíte typ db_file1 souboru jako data.
  • Uvědomíte si, že jste typ souboru zadali špatně.
  • Soubor odstraníte db_file1 a pak zálohujete transakční log pro tuto databázi.
  • Přidáte nový logovací soubor, který je pojmenovaný db_file1 do stejné databáze.
  • Snažíte se odstranit log, který je db_file1 pojmenovaný, použitím ALTER DATABASE příkazu nebo SQL Server Management Studio.

V tomto scénáři se zobrazí chybová zpráva podobná následující:

Msg 5009, úroveň 16, stav 9, řádek 1 Jeden nebo více souborů uvedených ve výpisu nebylo možné najít nebo inicializovat.

Možné příčiny

Tento problém nastává, pokud logický název souboru, který se snažíte odstranit, není v systémových katalogových tabulkách jedinečný. Například tento problém nastává, pokud soubor existoval v databázi dříve a poté byl odstraněn.

Když se pokusíte odstranit soubor se stejným logickým názvem, SQL Server se snaží odstranit ztracený logický soubor. To vede k chybové hlášce.

Akce uživatele

Abyste tento problém obešli, postupujte podle těchto kroků.

Note

Tyto kroky způsobí, že se hodnoty ID souboru znovu použijí.

  1. Použijte ALTER DATABASE příkaz k vytvoření nového logického souboru s jiným názvem a stejným datovým typem. Například pojmenujte logický soubor jako different_remove_file_name místo db_file1, jako v následujícím příkladu:

    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)
    

    Note

    Můžete použít libovolné jméno souboru nebo jakoukoli cestu k souboru.

  2. Použijte ALTER DATABASE příkaz k odstranění logického souboru, který jste vytvořili v kroku 1, jako je uvedeno v následujícím příkladu:

    ALTER DATABASE [DBNAME] REMOVE FILE [different_remove_file_name]
    
  3. Vytvořte zálohu transakčního logu databáze.

  4. Zkuste znovu odstranit logický soubor, který se jmenuje db_file1 .