Comment détecter et réparer à une corruption de la base de données SQL Server FILESTREAM ?

La fonction FILESTREAM de SQL Server vous permet de stocker les Binary Large Objects (BLOB) avec une colonne varbinary (max) de manière externe dans le système de fichiers au lieu de les stocker dans une base de données. Toutefois, cette fonction n’est pas activée par défaut. Vous devez l’activer à l’aide de SQL Server Management Studio (SSMS) et de SQL Server Configuration Manager. Si cette fonction est activée, la base de données est sauvegardée dans les groupes de fichiers FILESTREAM. Une fois qu’elle est stockée dans une colonne FILESTREAM, vous pouvez accéder aux fichiers à l’aide de transactions T-SQL.

Parfois, la modification ou la suppression de fichiers dans le dossier FILESTREAM ou l’enregistrement d’un fichier dans la base de données du serveur SQL peut entraîner des incohérences ou une corruption de la base de données du serveur SQL. Si le groupe de fichiers FILESTREAM est corrompu, votre base de données entrera dans l’état ‘Récupération de données en attente’. Dans ce blog, nous allons discuter des causes qui peuvent conduire à la corruption de la base de données SQL Server FILESTREAM et de la façon dont vous pouvez corriger la corruption et récupérer la base de données.

Causes de la corruption d’une base de données FILESTREAM dans SQL Server

La base de données FILESTREAM peut être corrompue pour diverses raisons. Les raisons les plus courantes sont les suivantes

Comment reconnaître une corruption dans une base de données FILESTREAM dans SQL Server ?

Vous pouvez utiliser la commande DBCC CHECKDB pour détecter la corruption ou les problèmes de cohérence physique et logique dans la base de données SQL compatible avec FILESTREAM. Elle vérifie également la cohérence au niveau des liens entre les métadonnées de la table et les fichiers et répertoires du système de fichiers FILESTREAM. Vous trouverez ici comment utiliser la commande DBCC CHECKDB pour vérifier la corruption d’une base de données compatible avec FILESTREAM :

DBCC CHECKDB 'nom_de_la_banque_de_données';

La commande DBCC CHECKDB peut signaler des erreurs telles que 7903, 7904, 7905, 7907, etc. Ces erreurs indiquent une corruption, des incohérences ou des problèmes d’intégrité causés par la manipulation du dossier FILESTREAM du serveur SQL.

Méthodes de réparation d’une corruption dans une base de données SQL Server FILESTREAM

Si la base de données SQL activée par FILESTREAM est endommagée ou inaccessible, vous pouvez utiliser les méthodes suivantes.

Méthode 1 : Restauration à partir d’une sauvegarde d’un groupe de fichiers

Les données du flux de fichiers sont stockées dans le groupe de fichiers FILESTREAM. Il contient les répertoires du système de fichiers, connus sous le nom de conteneurs de données. Si vous disposez d’une sauvegarde des fichiers et du groupe de fichiers dans SQL Server, vous pouvez facilement remettre la base de données à partir de la sauvegarde. Avant cela, assurez-vous que le fichier de sauvegarde contient les données FILESTREAM en utilisant la commande RESTORE FILELISTONLY. Cette commande affiche tous les fichiers de la sauvegarde.

Voici les étapes à suivre pour remettre la base de données à partir de la sauvegarde dans SQL Server :

Remarque : lisez d’abord les restrictions et limitations relatives à la restauration  des fichiers et des groupes de fichiers. Assurez-vous également que vous disposez des autorisations de RESTORE.

Cette opération permet de remettre la base de données en état. Vous pouvez localiser le bureau physique du groupe FILESTREAM à l’aide de la commande suivante :

SQL
SELECT nom, nom_physique, description de l'état, description du type 
FROM sys.database_files
WHERE type_desc = 'FILESTREAM'

Vous pouvez également utiliser des commandes Transact-SQL pour restaurer les fichiers et les  de fichiers groupes.

Méthode 2 : Utilisez la commande DBCC CHECKDB

Si la sauvegarde est obsolète ou indisponible, vous pouvez réparer la base de données à l’aide de la commande DBCC CHECKDB avec l’option de réparation REPAIR_ALLOW_DATA_LOSS. Voici la marche à suivre :

ALTER DATABASE Dbtesting SET SINGLE_USERCopy 
DBCC CHECKDB (N 'Dbtesting', REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS, NO_INFOMSGS ;
Code GOCopy
ALTER DATABASE Dbtesting SET MULTI_USERCopy 

Bien que la commande DBCC CHECKDB ci-dessus puisse résoudre les problèmes de corruption dans une base de données FILESTREAM, elle présente certaines limites. Elle peut laisser votre base de données dans un état logiquement incohérent. Lorsque vous réparez des erreurs complexes, vous devez exécuter la commande plusieurs fois, ce qui prend du temps. En plus, des lignes ou des pages peuvent être libérées lors de la réparation de la base de données, ce qui entraîne une perte de données.

Méthode 3 : utiliser un programme professionnel de réparation SQL

Pour réparer le fichier de base de données avec précision et intégrité, vous pouvez utiliser Stellar Repair for MS SQL – un outil de réparation SQL spécialisé qui peut réparer les fichiers MDF rapidement, même s’ils sont gravement endommagés. Après la réparation, l’outil enregistre les données récupérées dans un nouveau fichier de base de données MS SQL.

L’outil aide à réparer toutes les erreurs de corruption dans la base de données SQL signalées par la commande DBCC CHECKDB. Il dispose d’une interface utilisateur intuitive qui permet à l’utilisateur d’effectuer le processus de réparation facilement.

Caractéristiques importantes :

À la fin

Les corruptions dans les bases de données FILESTREAM peuvent se produire pour de nombreuses raisons. Nous avons décrit ci-dessus comment vous pouvez réparer une base de données FILESTREAM endommagée dans SQL Server. Vous pouvez facilement remettre la base de données en état à partir d’une sauvegarde. Toutefois, si vous n’avez pas accès à votre sauvegarde, vous pouvez utiliser la commande DBCC CHECKDB pour réparer la base de données. Cependant, cette méthode nécessite du temps et des efforts et ne garantit pas une récupération complète des données. Pour une récupération des données en douceur, vous devez donc utiliser un programme de réparation SQL professionnel tel que Stellar®Repair for MS SQL

Related Post

Exit mobile version