MSSQLSERVER_5009

Se aplica a:SQL Server

Detalles

Attribute Valor
Nombre del producto SQL Server
Id. de evento 5009
Origen de eventos MSSQLSERVER
Componente SQLEngine
Nombre simbólico ALT_BADDISKS
Texto del mensaje No se encuentra o no se puede inicializar uno o más archivos enumerados en la instrucción

Explicación

Este error indica que especificaste un nombre de archivo o un fileID en ALTER DATABASE el comando DBCC SHRINK* que no se pudo resolver.

Considere el caso siguiente:

  • Tiene una base de datos de Microsoft SQL Server que usa un modelo de recuperación completo o optimizado para cargas masivas de registros.
  • Agrega un nuevo archivo de datos denominado db_file1 a la base de datos.
  • Establece el tipo de archivo de db_file1 como datos.
  • Se da cuenta de que ha especificado el tipo de archivo de forma incorrecta.
  • Quita el archivo db_file1 y, después, hace una copia de seguridad del registro de transacciones de esta base de datos.
  • Agrega un nuevo archivo de registro denominado db_file1 a la misma base de datos.
  • Intentas eliminar el archivo de registro que se llama db_file1 usando la ALTER DATABASE sentencia o usando SQL Server Management Studio.

En esta situación, recibe un mensaje de error similar al siguiente:

Mensaje 5009, nivel 16, estado 9, línea 1 No se encuentra o no se puede inicializar uno o más archivos enumerados en la instrucción.

Causas posibles:

Este problema se produce si el nombre lógico del archivo que intenta quitar no es único en las tablas del catálogo del sistema. Por ejemplo, este error se genera si el archivo existía anteriormente en la base de datos y se quitó.

Al intentar quitar un archivo con el mismo nombre lógico, SQL Server intenta quitar el archivo lógico quitado. lo que da como resultado este mensaje de error.

Acción del usuario

Para solucionar este problema, siga estos pasos:

Nota:

Estos pasos hacen que se reutilicen los valores del identificador de archivo.

  1. Utiliza la ALTER DATABASE instrucción para crear un nuevo archivo lógico que tenga un nombre diferente y el mismo tipo de datos. Por ejemplo, asigne al archivo lógico el nombre different_remove_file_name en lugar de db_file1, como en el siguiente ejemplo:

    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:

    Puede usar cualquier nombre de archivo o cualquier ruta de acceso de archivo.

  2. Usa la ALTER DATABASE sentencia para eliminar el archivo lógico que creaste en el paso 1, como en el siguiente ejemplo:

    ALTER DATABASE [DBNAME] REMOVE FILE [different_remove_file_name]
    
  3. Cree una copia de seguridad del registro de transacciones de la base de datos.

  4. Intente quitar de nuevo el archivo lógico con el nombre db_file1.