J'ai un processus de longue durée qui maintient une transaction ouverte pendant toute la durée.
Je n'ai aucun contrôle sur la manière dont cela est exécuté.
Étant donné qu'une transaction est maintenue ouverte pendant toute la durée, lorsque le journal des transactions se remplit, SQL Server ne peut pas augmenter la taille du fichier journal.
Donc, le processus échoue avec l'erreur "The transaction log for database 'xxx' is full"
.
J'ai tenté d'éviter cela en augmentant la taille du fichier journal des transactions dans les propriétés de la base de données, mais j'obtiens la même erreur.
Je ne sais pas ce que je devrais essayer ensuite. Le processus dure plusieurs heures, il n'est donc pas facile de jouer à des essais et des erreurs.
Des idées?
Si quelqu'un est intéressé, le processus est une importation d'organisation dans Microsoft Dynamics CRM 4.0.
Il y a beaucoup d'espace disque, nous avons le journal en mode de journalisation simple et avons sauvegardé le journal avant de lancer le processus.
- = - = - = - = - MISE À JOUR - = - = - = - = -
Merci à tous pour les commentaires jusqu'à présent. Voici ce qui m'a amené à croire que le journal ne se développerait pas en raison de la transaction ouverte:
Je reçois l'erreur suivante...
Import Organization (Name=xxx, Id=560d04e7-98ed-e211-9759-0050569d6d39) failed with Exception:
System.Data.SqlClient.SqlException: The transaction log for database 'xxx' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases
Donc, suite à ce conseil, je suis allé à " log_reuse_wait_desc column in sys.databases
" et il avait la valeur " ACTIVE_TRANSACTION
".
Selon Microsoft: http://msdn.microsoft.com/en-us/library/ms345414(v=sql.105).aspx
Cela signifie ce qui suit:
Une transaction est active (tous les modèles de récupération). • Une transaction de longue durée peut exister au début de la sauvegarde du journal. Dans ce cas, la libération de l'espace peut nécessiter une autre sauvegarde du journal. Pour plus d'informations, consultez «Transactions actives de longue durée», plus loin dans cette rubrique.
• Une transaction est différée (SQL Server 2005 Enterprise Edition et versions ultérieures uniquement). Une transaction différée est en fait une transaction active dont la restauration est bloquée en raison d'une ressource indisponible. Pour plus d'informations sur les causes des transactions différées et comment les sortir de l'état différé, voir Transactions différées.
Ai-je mal compris quelque chose?
- = - = - = - MISE À JOUR 2 - = - = - = -
Je viens de lancer le processus avec une taille de fichier journal initiale de 30 Go. Cela prendra quelques heures.
- = - = - = - MISE À JOUR finale - = - = - = -
Le problème était en fait dû au fait que le fichier journal consommait tout l'espace disque disponible. Dans la dernière tentative, j'ai libéré 120 Go et il a encore utilisé tout cela et a finalement échoué.
Je ne savais pas que cela se produisait auparavant parce que lorsque le processus fonctionnait pendant la nuit, il revenait à l'échec. Cette fois, j'ai pu vérifier la taille du fichier journal avant la restauration.
Merci à tous pour votre contribution.