États des fichiers

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Dans SQL Server, l’état d’un fichier de base de données est conservé indépendamment de l’état de la base de données. Un fichier a toujours un seul état spécifique, tel que ONLINE ou OFFLINE. Pour afficher l’état actuel d’un fichier, utilisez l’affichage catalogue sys.master_files ou sys.database_files . Si la base de données est hors connexion, l’état des fichiers peut être visualisé à partir de l’affichage catalogue sys.master_files .

L'état des fichiers dans un groupe de fichiers détermine la disponibilité du groupe de fichiers tout entier. Pour qu'un groupe de fichiers soit disponible, tous ses fichiers doivent être en ligne. Pour afficher l’état actuel d’un groupe de fichiers, utilisez l’affichage catalogue sys.filegroups . Si un groupe de fichiers est hors connexion et que vous essayez d’accéder au groupe de fichiers par une instruction Transact-SQL, il échoue avec une erreur. Lorsque l'optimiseur de requête planifie des instructions SELECT, il évite les index non-cluster et les vues indexées résidant dans les groupes de fichiers hors connexion, de sorte que ces instructions puissent être exécutées correctement. Cependant, si le groupe de fichiers hors connexion contient le segment ou l'index cluster d'une table cible, les instructions SELECT échouent. De plus, toute instruction INSERT, UPDATE ou DELETE modifiant une table assortie d'un index dans un groupe de fichiers hors connexion ne peut être exécutée.

Définitions de l'état d'un fichier

Le tableau suivant décrit les états d'un fichier.

State Définition
ONLINE Le fichier est accessible pour toutes les opérations. Les fichiers du groupe de fichiers primaire sont toujours en ligne lorsque la base de données elle-même l'est. Si un fichier du groupe de fichiers primaire n'est pas en ligne, la base de données n'est pas en ligne et les états des fichiers secondaires ne sont pas définis.
OFFLINE Le fichier n'est pas accessible et il se peut qu'il ne soit pas présent sur le disque. Les fichiers prennent l'état hors connexion du fait d'une action explicite de l'utilisateur et restent hors connexion tant qu'une autre action n'est pas exécutée.

** Attention ** Un état de fichier peut être défini hors connexion lorsque le fichier est endommagé, mais il peut être restauré. Un fichier mis hors connexion ne peut être remis en ligne qu'en étant restauré à partir d'une sauvegarde. Pour plus d’informations sur la restauration d’un fichier unique, consultez RESTORE (Transact-SQL).

Un fichier de base de données est également défini en mode hors connexion quand une base de données est en mode de récupération complet ou utilisant les journaux de transactions et qu’un fichier est supprimé. L’entrée dans sys.master_files persiste jusqu’à ce qu’un journal des transactions soit tronqué au-delà de la valeur drop_lsn. Pour plus d’informations, consultez Troncation du journal des transactions.
RESTORING Le fichier est en cours de restauration. Les fichiers passent à l'état « restauration » en raison d'une commande de restauration affectant l'ensemble du fichier, et non pas juste une page, et conservent cet état tant que la restauration n'est pas accomplie et le fichier récupéré.
RECOVERY PENDING La récupération du fichier a été différée. Un fichier prend cet état automatiquement à la suite d'un processus de restauration fragmentaire au cours duquel le fichier n'est ni restauré ni récupéré. Une action supplémentaire est requise de la part de l'utilisateur pour résoudre l'erreur et permettre au processus de récupération de s'achever. Pour plus d’informations, consultez l’article Restaurations fragmentaires (SQL Server).
SUSPECT La récupération du fichier a échoué au cours d'un processus de restauration en ligne. Si le fichier fait partie du groupe de fichiers primaire, la base de données est également marquée comme étant suspecte. Sans cela, seul le fichier est suspect et la base de données reste en ligne.

Le fichier garde l'état suspect tant qu'il n'est pas rendu de nouveau disponible à l'aide de l'une des méthodes suivantes :

Restauration et récupération

DBCC CHECKDB avec REPAIR_ALLOW_DATA_LOSS
DEFUNCT Le fichier a été supprimé alors qu'il n'était pas en ligne. Tous les fichiers d'un groupe de fichiers prennent l'état « ancien » quand un groupe de fichiers hors connexion est supprimé.

ALTER DATABASE (Transact-SQL)

États d’une base de données

États de la mise en miroir (SQL Server)

DBCC CHECKDB (Transact-SQL)

Groupes de fichiers et fichiers de base de données