[SQL Server] Supprimer les fichiers FileStream orphelins
/****************** Supprimer les fichiers FileStream orphelins ******************/
/***** Première Méthode *****/
/* Important : Le backup LOG de la MaBaseFileStream après l'exécution de la commande DELETE est nécéssaire
pour la suppression des fichiers système FileStream
*/
USE [MaBaseFileStream]
GO
--Lancer la commande DELETE sur la table qui possède la colonne FileStream
DELETE dbo.TableFileStream WHERE num_lig=1
--Lancer le backup LOG de la base
/***** Deuxième Méthode *****/
--Attention !!!! Ne pas lancer cette commande en PRODUCTION parecequ'elle supprime aussi les enregistrements dans la table TableFileStream qui ne sont pas liés à des fichiers FileStream
USE [master]
GO
ALTER DATABASE [MaBaseFileStream] SET SINGLE_USER WITH NO_WAIT
GO
USE [MaBaseFileStream]
GO
DBCC CHECKTABLE('dbo.TableFileStream',REPAIR_ALLOW_DATA_LOSS)
GO
USE [master]
GO
ALTER DATABASE [MaBaseFileStream] SET MULTI_USER WITH NO_WAIT
GO
/***** Dexième Méthode *****/
/*
Important : Afin que les fichiers FileStream soient supprimés ce process doit être lancé deux fois.
La première exécution du process marque les fichiers FileStream à supprimer
La deuxième exécution du process supprime les fichiers FileStream qui ont été marqués
*/
USE [MaBaseFileStream]
GO
-- Create a checkpoint on current database
CHECKPOINT
GO
-- Execute Garbage Collector after a checkpoint created
EXEC sp_filestream_force_garbage_collection'MaBaseFileStream'
GO