2010-08-25 7 views
1

Dans Sql Server, je trouve que, quand je marque une base de données en lecture seule, son journal de transactions important reste. Pour résoudre ce problème, je dois le redéfinir sur writeable, puis dbcc shrinkfile sur le fichier journal, puis le redéfinir en lecture seule.À quoi sert un journal de transactions sur une base de données en lecture seule?

À quoi sert un journal de transactions si la base de données est en lecture seule? Y a-t-il une raison pour laquelle ce n'est pas simplement supprimé/vidé?

Répondre

3

Si votre base de données est toujours en mode de récupération complète, le journal ne rétrécira pas sans une sauvegarde appropriée. Vous devez passer votre base de données en lecture seule à la récupération simple.

De plus, le fichier journal est nécessaire si jamais vous décidez de détacher/attacher cette base de données. Comme nous l'avons here:

En revanche, pour une base de données en lecture seule, le journal ne peut pas être reconstruit car le fichier principal ne peut pas être mis à jour. Par conséquent, lorsque vous attachez une base de données en lecture seule dont le journal est indisponible, vous devez fournir les fichiers journaux ou fichiers dans la clause FOR ATTACH.

+0

La commutation de la base de données en lecture seule empêche en fait le rétrécissement automatique qui se produirait normalement en mode de récupération simple. – GlennS

1

Il n'y a pas d'utilité pour un journal de transactions sur une base de données en lecture seule :-) En supposant que vous ayez dépassé un point où vous ne vous souciez plus des transactions effectuées pour le remplir. J'imagine qu'il n'est pas vidé car ce ne serait pas un bon comportement par défaut, imaginez si vous vouliez revenir en mode écriture? Ou avez-vous découvert pendant l'opération en lecture seule qu'il y avait un problème et que vous deviez utiliser les journaux?