web-dev-qa-db-fra.com

Désactiver le journal des transactions

Oracle dispose de commandes SQL que l’on peut émettre pour qu’une transaction ne soit pas journalisée. Existe-t-il quelque chose de similaire pour SQL Server 2008?

Mon scénario: nous avons besoin de journaux Tx sur les serveurs (Dev, QA, Prod), mais nous pouvons peut-être nous en passer sur des machines de développement.

70
Raj More

En aucun cas, vous ne pouvez vous passer de journaux de transactions dans SQL Server. Le moteur ne fonctionnera tout simplement pas.

Vous POUVEZ définir votre modèle de récupération sur SIMPLE sur vos machines de développement, ce qui évitera tout gonflement du journal des transactions lorsque les sauvegardes du journal des transactions ne sont pas effectuées.

ALTER DATABASE MyDB SET RECOVERY SIMPLE;
113
Aaron Alton

SQL Server nécessite un journal de transaction pour fonctionner.

Cela dit, il existe deux modes de fonctionnement pour le journal des transactions:

  • Simple
  • Plein

En mode Full, le journal des transactions ne cesse de croître jusqu'à ce que vous sauvegardiez la base de données. En mode Simple: l'espace dans le journal des transactions est "recyclé" tous les points de contrôle .

Très peu de personnes ont besoin d’exécuter leurs bases de données dans le modèle de récupération Full. Le seul avantage du modèle Complet est que vous souhaitiez sauvegarder la base de données plusieurs fois par jour et que la sauvegarde de la base de données entière prenne trop de temps. Vous ne devez donc sauvegarder que le journal des transactions.

Le journal des transactions ne cesse de croître toute la journée et vous continuez à le sauvegarder. Cette nuit-là, vous effectuez votre sauvegarde complète, puis SQL Server tronque le journal des transactions et commence à réutiliser l'espace alloué dans le fichier journal des transactions.

Si vous ne le faites que sauvegardes complètes de la base de données, vous ne voulez pas du mode de récupération complète.

43
Ian Boyd

Il existe un troisième mode de récupération non mentionné ci-dessus. Le mode de récupération détermine finalement la taille et la taille des fichiers LDF et leur écriture. Dans les cas où vous allez faire n'importe quel type d'insertions en bloc, vous devez définir le DB pour qu'il soit en "BULK/LOGGED". Les plaquettes en vrac se déplacent rapidement et peuvent être changées à la volée.

Faire cela,

USE master ;
ALTER DATABASE model SET RECOVERY BULK_LOGGED ;

Pour le remettre en place:

USE master ;
ALTER DATABASE model SET RECOVERY FULL ;

Dans l’esprit d’ajouter à la conversation sur les raisons pour lesquelles une personne ne voudrait pas d’un FDL, j’ajoute ceci: Nous faisons de la modélisation multidimensionnelle. Nous utilisons essentiellement la base de données comme un grand magasin de variables traitées en bloc à l'aide de programmes externes. Nous n'exigeons JAMAIS de restauration. Si nous pouvions améliorer les performances en désactivant la journalisation ALL, nous le prendrions sans hésiter.

42
NameIsPete

Quel est votre problème avec les journaux Tx? Elles poussent? Ensuite, il suffit de définir l'option tronquer sur le point de contrôle.

De la documentation Microsoft:

Dans SQL Server 2000 ou SQL Server 2005, le modèle de récupération "Simple" équivaut à "tronquer le journal au point de contrôle" dans les versions antérieures de SQL Server. Si le journal des transactions est tronqué à chaque fois qu'un point de contrôle est effectué sur le serveur, cela vous empêche d'utiliser le journal pour la récupération de la base de données. Vous ne pouvez utiliser que des sauvegardes complètes de la base de données pour restaurer vos données. Les sauvegardes du journal des transactions sont désactivées lorsque le modèle de récupération "Simple" est utilisé.

2
zvolkov

Si cela ne concerne que les machines de développement afin de gagner de la place, choisissez simplement le mode de récupération et vous vous en sortirez bien.

Sur les machines de production, il est fortement recommandé de conserver les bases de données en mode de récupération complète. Cela garantira que vous pouvez faire une récupération ponctuelle si nécessaire.

De plus, le fait de disposer de bases de données en mode de récupération complète peut vous aider à annuler les mises à jour et les suppressions accidentelles en lisant le journal des transactions. Voir ci-dessous ou plus de détails.

Comment puis-je annuler une requête UPDATE dans SQL Server 2005?

Lire le fichier journal (* .LDF) dans SQL Server 2008

Si l'espace est un problème sur les machines de production, créez simplement des sauvegardes fréquentes du journal des transactions.

0
JdMR