MSSQLSERVER_5009
S'applique à : SQL Server
Détails
Attribut | Valeur |
---|---|
Nom du produit | SQL Server |
ID de l’événement | 5009 |
Source de l’événement | MSSQLSERVER |
Composant | SQLEngine |
Nom symbolique | ALT_BADDISKS |
Texte du message | Un ou plusieurs fichiers répertoriés dans l’instruction sont introuvables ou n’ont pas pu être initialisés. |
Explication
Cette erreur indique que vous avez spécifié dans la commande ALTER DATABASE ou DBCC SHRINK* un nom de fichier ou un ID de fichier qui n’a pas pu être résolu.
Examinez le cas suivant :
- Vous disposez d’une base de données Microsoft SQL Server qui utilise un modèle de récupération complet ou journalisé en bloc.
- Vous ajoutez un nouveau fichier de données nommé db_file1 à la base de données.
- Vous choisissez « Données » comme type de fichier pour
db_file1
. - Vous vous rendez compte que vous avez spécifié le mauvais type de fichier.
- Vous supprimez le fichier
db_file1
, puis vous sauvegardez le journal des transactions de cette base de données. - Vous ajoutez un nouveau fichier journal nommé db_file1 à la même base de données.
- Vous essayez de supprimer le fichier journal nommé db_file1 à l’aide de l’instruction ALTER DATABASE ou de SQL Server Management Studio.
Dans ce cas, un message d’erreur semblable au suivant s’affiche :
Msg 5009, Niveau 16, État 9, Ligne 1 - Un ou plusieurs fichiers répertoriés dans l’instruction sont introuvables ou n’ont pas pu être initialisés.
Causes possibles
Ce problème se produit lorsque le nom logique du fichier que vous essayez de supprimer n’est pas unique parmi les tables du catalogue système. Par exemple, ce problème se produira si ce fichier se trouvait dans la base de données, mais qu’il en a été supprimé.
Lorsque vous essayez de supprimer un fichier portant le même nom logique, SQL Server tente de supprimer le fichier logique supprimé. Cela déclenche l’affichage d’un message d’erreur.
Action utilisateur
Pour contourner ce problème, effectuez les étapes suivantes.
Remarque
Ces étapes entraînent la réutilisation des valeurs d’ID de fichier.
Utilisez l’instruction ALTER DATABASE pour créer un nouveau fichier logique avec un nom différent, mais avec le même type de données. Par exemple, nommez le fichier logique
different_remove_file_name
au lieu dedb_file1
, comme dans l’exemple suivant :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)
Remarque
Vous pouvez utiliser n’importe quel nom ou chemin de fichier.
Utilisez l’instruction ALTER DATABASE pour supprimer le fichier logique que vous avez créé à l’étape 1, comme dans l’exemple suivant :
ALTER DATABASE [DBNAME] REMOVE FILE [different_remove_file_name]
Créez une sauvegarde du journal des transactions de la base de données.
Réessayez de supprimer le fichier logique nommé db_file1.