Bonjour,
Suite à mes différents problème de cohérences des données j'ai décidé de lancer un rebuild de tout les indexes de la base en utilisant le script suivant :
J'ai un schrink a chaque itération car sinon le log se remplit et il ne va pas jusqu'au bout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 DECLARE @Code Varchar(max) Set @Code = ' Print ''Début ? ''+Convert(varchar,getdate(),121) ALTER INDEX ALL ON ? REBUILD PARTITION = ALL DBCC SHRINKFILE (N''DB_tst_log'' , 0, TRUNCATEONLY) Print ''Fin ? ''+Convert(varchar,getdate(),121) ' EXECUTE sp_MSforeachtable @Code;
Sur un clone de la prod en Sql2012 par de problème ça tourne pendant ~40 minutes et tout vas bien.
Mais ma base de prod est en 2008 R2. Alors j'ai essayer de le lancer sur un clone en SQL2008R2.
La ça a tourné une fois pendant plus de 2 heures mais avec un résultat correcte.
Mais lors d'un de mes test au bout de 3h le fichier de log était tellement plein que j'ai été déconnecté, et ensuite plus moyen de vider le log car il était déjà lui même trop plein.
J'ai utiliser différent script que je vous met a disposition :
ainsi que
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 USE [DB] CHECKPOINT ALTER DATABASE [DB] SET RECOVERY SIMPLE ALTER DATABASE [DB] SET OFFLINE WITH ROLLBACK IMMEDIATE ALTER DATABASE [DB] SET ONLINE USE [DB] DBCC SHRINKFILE (N'DB_tst_log' , 0, TRUNCATEONLY)
Mais rien ne fonctionne comme il faut, mon fichier de log à été réduit a 35Go mais pas plus bas. J'ai restarter le service sql à plusieurs reprises mais sans succes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ALTER DATABASE DB SET EMERGENCY ALTER database DB SET SINGLE_USER DBCC CHECKDB ('DB','REPAIR') ALTER database DB SET Multi_USER ALTER database DB SET ONLINE DBCC SHRINKFILE (N'DB_tst_log' , 0)
Un de vous a-t-il une idée ?
Merci a+
Partager