2009-08-06 4 views
9

Bonjour, Je dispose d'une base de données de production et de sa base de données de rapports répliquée. Comment réduire les fichiers du journal des transactions dans la base de données de production lorsque la taille du fichier journal augmente. J'ai essayé commandes DBCC SHRINKFILE et SHRINKDATABASE mais cela ne fonctionne pas pour moi. Je ne peux pas détacher et rétrécir et attacher à nouveau en tant que db dans la réplication. Aidez-moi s'il vous plaît dans ce numéro.Comment réduire la journalisation des transactions dans la base de données du serveur SQL dans la réplication

Répondre

0

Avez-vous un calendrier de sauvegarde régulier en place?

Sinon, je vous suggère de lire cet excellent article: 8 Steps to better Transaction Log throughput

+0

non je n'ai pas de planification de sauvegarde.J'ai besoin de supprimer le journal de synchronisation –

+1

La raison pour laquelle vous avez un journal de transactions volumineux est que vous ne sauvegardez pas régulièrement votre base de données. –

1

La base de données ne vous permet pas de supprimer les données de transaction qui ne sont pas sauvegardées. Vous devez d'abord sauvegarder le journal des transactions, puis vous pouvez le réduire.

+0

Que j'ai essayé, mais n'a pas fonctionné pour moi.La taille n'est pas encore diminuée –

+0

Si votre base de données est en mode de récupération complète, vous devez vous assurer que vous effectuez une sauvegarde du journal des transactions ainsi qu'une sauvegarde de base de données. – KSimons

0

Réduction de la taille du fichier journal avec DBCC SHRINKFILE

Puis tronquer le fichier journal à l'aide

databaseName sauvegarde avec truncate_only

rétrécir ensuite le fichier journal à nouveau

0

je Red-Gate's SQL Backup outil prends soin de la sauvegarde. Ensuite, je viens d'utiliser la console de gestion pour émettre une commande de rétrécissement sur le fichier journal (en lui disant de réorganiser les pages avant de libérer l'espace inutilisé).

Fonctionne comme un charme.

9

Vérifiez d'abord ce qui est l'origine de votre base de données de ne pas diminuer en exécutant:

SELECT name, log_reuse_wait_desc FROM sys.DATABASES 

Si vous êtes bloqué par une transaction, trouver dont une avec:

DBCC OPENTRAN 

Tuez l'opération et réduire votre db. Si la cause du blocage est 'REPLICATION' et que vous êtes sûr que vos réplicas sont synchronisés, vous devrez peut-être réinitialiser l'état des transactions répliquées. Pour voir l'état de ce que la base de données pense encore à répliquer l'utilisation:

DBCC loginfo 

Vous pouvez réinitialiser ce en tournant d'abord l'agent DESACTIVE (En général, je tourner l'ensemble Agent SQL Server off), puis exécutez cette requête sur la base de données pour laquelle vous voulez résoudre le problème de réplication:

EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time= 0, @reset = 1 

Fermer la connexion où vous avez exécuté cette requête et redémarrez l'Agent SQL Server (ou tout simplement l'agent Reader). Vous devriez être prêt à réduire votre DB maintenant.

+0

Solution exacte dont j'avais besoin - résolu mon problème de journal. – Dragonsdoom

Questions connexes