Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Details
| Attribute | Value |
|---|---|
| Nome do Produto | SQL Server |
| ID do Evento | 5009 |
| Origem do evento | MSSQLSERVER |
| Componente | SQLEngine |
| Nome simbólico | ALT_BADDISKS |
| Texto da mensagem | Um ou mais ficheiros listados na declaração não puderam ser encontrados ou não puderam ser inicializados |
Explanation
Este erro indica que especificou um nome de ficheiro ou um ficheiroID no ALTER DATABASE comando DBCC SHRINK* que não pôde ser resolvido.
Considere o seguinte cenário:
- Tem uma base de dados do Microsoft SQL Server que utiliza um modelo de recuperação completo ou em bloco.
- Adiciona-se um novo ficheiro de dados que se chama db_file1 à base de dados.
- Defines o tipo de ficheiro do
db_file1ficheiro como dados. - Percebes que especificaste o tipo de ficheiro incorretamente.
- Remove o
db_file1ficheiro e depois faz backup do registo de transações dessa base de dados. - Adiciona-se um novo ficheiro de registo que se chama db_file1 à mesma base de dados.
- Tenta remover o ficheiro de registo que tem o nome db_file1 usando a ALTER DATABASE instrução ou usando SQL Server Management Studio.
Neste cenário, receberá uma mensagem de erro semelhante à seguinte:
Msg 5009, Nível 16, Estado 9, Linha 1 Um ou mais ficheiros listados na declaração não puderam ser encontrados ou não puderam ser inicializados.
Causas possíveis
Este problema ocorre se o nome lógico do ficheiro que tenta remover não for único nas tabelas do catálogo do sistema. Por exemplo, este problema ocorre se o ficheiro já existia anteriormente na base de dados e depois o ficheiro foi removido.
Quando tentas remover um ficheiro com o mesmo nome lógico, o SQL Server tenta remover o ficheiro lógico que caiu. Isto resulta na mensagem de erro.
Ação do usuário
Para contornar este problema, siga estes passos.
Note
Estes passos fazem com que os valores do ID do ficheiro sejam reutilizados.
Use a ALTER DATABASE instrução para criar um novo ficheiro lógico com um nome diferente e o mesmo tipo de dado. Por exemplo, nomeie o ficheiro lógico como
different_remove_file_nameem vez dedb_file1, como no seguinte exemplo: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
Pode usar qualquer nome de ficheiro ou qualquer caminho de ficheiro.
Use a ALTER DATABASE instrução para remover o ficheiro lógico que criou no passo 1, como no seguinte exemplo:
ALTER DATABASE [DBNAME] REMOVE FILE [different_remove_file_name]Crie uma cópia de segurança do registo de transações da base de dados.
Tenta remover novamente o ficheiro lógico que tem o nome db_file1 .