MS SQL Server 2005 Shrink File

MS SQL Server 2005 Shrink File - SQL/NoSQL - Programmation

Marsh Posté le 04-02-2013 à 18:02:16    

Bonjour à tous,  :hello:  
 
Pourriez vous m'éclairiez sur un point dans Microsoft SQL Server 2005 :
 
J'ai un fichier de logs de base de données (.ldf) qui est devenu très gros avec le temps (presque 70Go). Hors, lorsque je vais dans Task > Shrink > File, je peut voir que 99% de l'espace disponible est libre.  :ouch:  
 
Puis-je donc utiliser sans risque cette fonction Shrink et va t'elle vraiment faire diminuer la taille de ce fichier ?
 
D'avance merci.

Reply

Marsh Posté le 04-02-2013 à 18:02:16   

Reply

Marsh Posté le 04-02-2013 à 23:15:07    

Non. Techniquement oui, mais en fait shrink c'est de la merde et c'est une commande qui pose beaucoup plus de problème qu'autre chose.

 

select name,  recovery_model_desc, log_reuse_wait_desc from sys.databases

 

Regarde le résultat pour la base en question, ca devrait déjà donner qq idées.


Message édité par Setlel le 04-02-2013 à 23:15:22
Reply

Marsh Posté le 05-02-2013 à 11:00:50    

Code trouver sur le net pour nettoyer un fihicer log d'une base et que j'utilise maintenant  

Spoiler :

 
 
declare @chemin_svg nvarchar(max)
set @chemin_svg = 'e:SQLLog' mettre un chemin valide  
 
DECLARE @t_bdd TABLE( ligne int identity(1,1), id_bdd int, name varchar(max))
INSERT @t_bdd( id_bdd, name ) select database_id, name  from sys.databases where database_id > 4 passer eventuellement le nom de ta base en question à nettoyer  
 
DECLARE @k Int
declare @id_bdd int
declare @name varchar(max)
 
WHILE EXISTS( select id_bdd from @t_bdd)  
BEGIN
SELECT TOP 1 @k = ligne, @id_bdd = id_bdd , @name = name FROM @t_bdd
--traitement
declare @chemin_svg_bdd nvarchar(max)
set @chemin_svg_bdd = @chemin_svg + @name
declare @req nvarchar(max)
set @req = 'USE ['+ @name + ']  
BACKUP LOG [' + @name + '] TO DISK = ''' + @chemin_svg_bdd + '.trn''
-- Tente de convaincre le moteur d''utiliser
-- le début du journal de transactions
CHECKPOINT
 
-- Si la portition active n''est plus à la fin
-- du journal de transactions, vide cette partie
BACKUP LOG [' + @name + '] TO DISK = ''' + @chemin_svg_bdd + '.trn''
-- Le Shrink est maintenant possible
DBCC SHRINKFILE(2, 10, TRUNCATEONLY)
 
-- du journal de transactions, vide cette partie
BACKUP LOG [' + @name + '] TO DISK = ''' + @chemin_svg_bdd + '.trn''
-- Le Shrink est maintenant possible
DBCC SHRINKFILE(2, 10, TRUNCATEONLY)'
exec sp_executesql @req
delete @t_bdd where ligne = @k -- à la fin
end
 
GO


ensuite tu peux supprimer le fichier qui a été créer  
c'est bien de faire ça avant un backup comme ça la restauration prendre moins de temps après


---------------
[Ach] Just dance + cam PS4
Reply

Marsh Posté le 05-02-2013 à 11:39:04    

Pas besoin de tout ca, c'est un fichier log.
Si il y a de l'espace libre tu peux faire un shrink vers une taille plus raisonable.
 
Pour eviter que ca ne se reproduise il faut soit prévoir des backup log regulier (si le recovery model est a full ou Bulk Logged), soit trouver la grosse transaction qui fait gonfle le log jusque la (si le recovery model est a simple).

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed