MSSQLSERVER_5009
Aplica-se a: SQL Server
Detalhes
Atributo | Valor |
---|---|
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 arquivos listados na instrução não foram encontrados ou não foram inicializados |
Explicação
Esse erro indica que você especificou uma fileID ou um nome de arquivo no comando ALTER DATABASE ou DBCC SHRINK* que não pôde ser resolvido.
Considere o cenário a seguir.
- Você tem um banco de dados do Microsoft SQL Server que usa um modelo de recuperação completo ou bulk-logged.
- Você adiciona um novo arquivo de dados chamado db_file1 ao banco de dados.
- Você define o tipo de arquivo do arquivo
db_file1
como dados. - Você percebe que especificou o tipo de arquivo incorretamente.
- Você remove o arquivo
db_file1
e faz backup do log de transações desse banco de dados. - Você adiciona um novo arquivo de log chamado db_file1 ao mesmo banco de dados.
- Você tenta remover o arquivo de log chamado db_file1 usando a instrução ALTER DATABASE ou usando SQL Server Management Studio.
Neste cenário, você recebe uma mensagem de erro semelhante à seguinte:
Mensagem 5009, Nível 16, Estado 9, Linha 1: um ou mais arquivos listados na instrução não foram encontrados ou não foram inicializados.
Possíveis causas:
Esse problema ocorre se o nome lógico do arquivo que você tentar remover não for exclusivo nas tabelas do catálogo do sistema. Por exemplo, esse problema ocorre se o arquivo existia no banco de dados anteriormente e foi removido.
Quando você tenta remover um arquivo que tem o mesmo nome lógico, o SQL Server tenta remover o arquivo lógico descartado. Isso resulta na mensagem de erro.
Ação do usuário
Para encontrar uma solução alternativa para esse problema, siga estas etapas.
Observação
Essas etapas fazem com que os valores da ID de arquivo sejam reutilizados.
Use a instrução ALTER DATABASE para criar um arquivo lógico que tenha um nome diferente e o mesmo tipo de dados. Por exemplo, nomeie o arquivo lógico como
different_remove_file_name
em 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)
Observação
Você pode usar qualquer nome ou caminho de arquivo.
Use a instrução ALTER DATABASE para remover o arquivo lógico criado na etapa 1, como no seguinte exemplo:
ALTER DATABASE [DBNAME] REMOVE FILE [different_remove_file_name]
Crie um backup de log de transações do banco de dados.
Tente remover o arquivo lógico chamado db_file1 novamente.