D'abord, est-ce que tu as besoin d'etre cappable de faire un point in time restore ou est-ce qu'un restore depuis le dernier backup est suffisant?
Si tu n'as pas besoin du point in time restore, tu changes le recovery model de ta DB de FULL en SIMPLE (Properties -> Options -> Recovery model).
Si tu veux garder la possiblité de faire un point in time restore tu dois faire des backup du Log (BACKUP LOG dbName TO ... ).
Soit tu fais des backup log toutes les heures (si c'est suffisant) ou tu ponds un script qui fait un backup log quand ton log atteint une certaine taille.
Pour te sortir de ton probleme la tout de suite, tu peux mettre ta DB en simple recovery, faire un shrink du log, la remettre en FULL recovery et faire un backup complet de la DB.
Si tu fais un backup log suffisement souvent, la taille du log n'augmentera pas (il ne reduit pas la taille automatiquement pour des raisons de performance), si tu ne fais pas de backup log assez souvent il ne voudra pas que tu fasses un shrink, car il n'y a pas vraiment d'espace non utilisé dans ton log.
Ton log peut aussi grossir tres fort si un utilisateur utilises des transactions tres importante.
Si tu veux savoir pourquoi un shrink ne marche pas sur ton log tu peux faire ca:
Code :
SELECT * FROM sys.DATABASES
|
Tu trouves la lignes correspondant a ta DB et tu regardes la colonne Log_reuse_wait_desc:
si c'est a NOTHING, tu devrais pouvoir faire un shrink sans problemes
si c'est a ACTIVE_TRANSACTION ca veut dire qu'un utilisateur est en train de remplir ton log avec une grosse transaction
si c'est a LOG_BACKUP ca veut dire qu'il attend un backup du log
ca peut aussi etre a CHECKPOINT, dans ce cas la tu fais un checkpoint toi meme, ou tu attends un peu que le server le fasse tout seul.