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 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 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.
- Intente quitar el archivo de registro denominado db_file1 mediante la instrucción ALTER DATABASE o mediante 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 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.
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 dedb_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.
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]
Cree una copia de seguridad del registro de transacciones de la base de datos.
Intente quitar de nuevo el archivo lógico con el nombre db_file1.