Compartir vía


MSSQLSERVER_5009

Se aplica a:SQL Server

Detalles

Atributo Value
Nombre de 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 se ha especificado un nombre o un identificador de archivo en la instrucción ALTER DATABASE o en el comando DBCC SHRINK * que no se ha podido resolver.

Considere el siguiente escenario:

  • Tiene una base de datos de Microsoft SQL Server que usa un modelo de recuperación completa u 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.
  • Intenta quitar el archivo de registro denominado db_file1 mediante la instrucción ALTER DATABASE o con SQL Server Management Studio.

En este escenario, 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 que tiene el mismo nombre lógico, SQL Server intenta eliminar el archivo lógico que se ha 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. Use la instrucción ALTER DATABASE para crear un nuevo archivo lógico con un nombre diferente y con 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. Use la instrucción ALTER DATABASE para quitar el archivo lógico que ha creado en el paso 1, tal y como se indica en el ejemplo siguiente:

    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.