Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Dettagli
| Attributo | Valore |
|---|---|
| Nome prodotto | SQL Server |
| ID evento | 5009 |
| Origine evento | MSSQLSERVER |
| Componente | SQLEngine |
| Nome simbolico | ALT_BADDISKS |
| Testo del messaggio | Impossibile trovare o inizializzare uno o più file elencati nell'istruzione |
Spiegazione
Questo errore indica che hai specificato un nome o file ID in ALTER DATABASE un comando DBCC SHRINK* che non è stato risolto.
Prendi in considerazione lo scenario seguente:
- Si dispone di un database di Microsoft SQL Server che usa un modello di recupero con registrazione completa o con registrazione minima delle operazioni bulk.
- Viene aggiunto un nuovo file di dati denominato db_file1 al database.
- Si imposta il tipo di file per il file
db_file1come dati. - Ci si rende conto che il tipo di file è stato specificato in modo errato.
- Si rimuove il file
db_file1e quindi si esegue il backup del log delle transazioni per questo database. - Si aggiunge un nuovo file di log denominato db_file1 allo stesso database.
- Provi a rimuovere il file di log che è chiamato db_file1 usando l'istruzione ALTER DATABASE o SQL Server Management Studio.
In questo caso, è possibile che venga visualizzato un messaggio di errore analogo al seguente:
Messaggio 5009, livello 16, stato 9, riga 1 Impossibile trovare o inizializzare uno o più file elencati nell'istruzione.
Possibili cause
Questo problema si verifica se il nome logico del file che si tenta di rimuovere non è univoco nelle tabelle del catalogo di sistema. Questo problema si verifica, ad esempio, se il file esisteva in precedenza nel database e poi è stato rimosso.
Quando si tenta di rimuovere un file con lo stesso nome logico, SQL Server tenta di rimuovere il file logico eliminato. Questa condizione genera il messaggio di errore.
Azione utente
Per risolvere il problema, seguire questa procedura.
Nota
Questa procedura causa il riutilizzo dei valori di ID dei file.
Usa l'istruzione ALTER DATABASE per creare un nuovo file logico con un nome diverso e lo stesso tipo di dato. Ad esempio, denominare il file logico
different_remove_file_nameanzichédb_file1, come nell'esempio seguente: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)Nota
È possibile usare qualsiasi nome o percorso di file.
Usa la ALTER DATABASE dichiarazione per rimuovere il file logico che hai creato nel passo 1, come nel seguente esempio:
ALTER DATABASE [DBNAME] REMOVE FILE [different_remove_file_name]Eseguire un backup del log delle transazioni del database.
Provare a rimuovere di nuovo il file logico denominato db_file1.