Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Details
| Attribute | Value |
|---|---|
| Productnaam | SQL Server |
| Gebeurtenis-id | 5009 |
| Bron van gebeurtenis | MSSQLSERVER |
| Onderdeel | SQLEngine |
| Symbolische naam | ALT_BADDISKS |
| Berichttekst | Een of meer bestanden die in de verklaring zijn vermeld, konden niet worden gevonden of niet worden geïnitialiseerd |
Explanation
Deze foutmelding geeft aan dat je een bestandsnaam of bestandsID hebt opgegeven in ALTER DATABASE of het DBCC SHRINK*-commando dat niet kon worden opgelost.
Bekijk het volgende scenario:
- Je hebt een Microsoft SQL Server-database die een volledig of bulk-logged herstelmodel gebruikt.
- Je voegt een nieuw databestand toe dat db_file1 heet aan de database.
- Je stelt het bestandstype voor het
db_file1bestand in als data. - Je realiseert je dat je het bestandstype verkeerd hebt opgegeven.
- Je verwijdert het
db_file1bestand en maakt een back-up van het transactielogboek voor deze database. - Je voegt een nieuw logbestand toe dat db_file1 heet aan dezelfde database.
- Je probeert het logbestand dat db_file1 heet te verwijderen door de ALTER DATABASE instructie te gebruiken of door SQL Server Management Studio te gebruiken.
In dit scenario ontvangt u een foutbericht dat er ongeveer als volgt uitziet:
Msg 5009, Niveau 16, Staat 9, Regel 1 Een of meer bestanden die in de verklaring werden vermeld, konden niet worden gevonden of niet worden geïnitialiseerd.
Mogelijke oorzaken
Dit probleem doet zich voor als de logische naam van het bestand dat je probeert te verwijderen niet uniek is in de systeemcatalogustabellen. Dit probleem doet zich bijvoorbeeld voor als het bestand eerder in de database bestond en het bestand daarna werd verwijderd.
Wanneer je probeert een bestand met dezelfde logische naam te verwijderen, probeert SQL Server het verwijderde logische bestand te verwijderen. Dit resulteert in het foutbericht.
Gebruikersactie
Om dit probleem te omzeilen, volg deze stappen.
Note
Deze stappen zorgen ervoor dat de bestands-ID-waarden opnieuw worden gebruikt.
Gebruik de ALTER DATABASE instructie om een nieuw logisch bestand te maken met een andere naam en hetzelfde datatype. Geef bijvoorbeeld het logische bestand een naam als in
different_remove_file_nameplaats vandb_file1, zoals in het volgende voorbeeld: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
Je kunt elke bestandsnaam of elk bestandspad gebruiken.
Gebruik de ALTER DATABASE instructie om het logische bestand te verwijderen dat je in stap 1 hebt aangemaakt, zoals in het volgende voorbeeld:
ALTER DATABASE [DBNAME] REMOVE FILE [different_remove_file_name]Maak een back-up van het transactielogboek van de database.
Probeer het logische bestand dat db_file1 heet opnieuw te verwijderen.