MSSQLSERVER_5009

Aplica-se: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 um nome de arquivo ou IDD de arquivo no ALTER DATABASE comando 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 que é nomeado db_file1 usando a ALTER DATABASE instrução ou usando SQL Server Management Studio.

Além disso, uma mensagem de erro semelhante à seguinte é exibida:

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.

  1. Use a ALTER DATABASE instrução para criar um novo arquivo lógico com um nome diferente e o mesmo tipo de dado. Por exemplo, nomeie o arquivo lógico como different_remove_file_name em vez de db_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.

  2. Use a ALTER DATABASE instrução para remover o arquivo lógico que você criou na etapa 1, como no exemplo a seguir:

    ALTER DATABASE [DBNAME] REMOVE FILE [different_remove_file_name]
    
  3. Crie um backup de log de transações do banco de dados.

  4. Tente remover o arquivo lógico chamado db_file1 novamente.