IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

le fichier log explose lors de la mise ajour!


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 121
    Par défaut le fichier log explose lors de la mise ajour!
    bonjour
    je souhaites mettre a jour ma base de données
    j'ai le scripte necessaire qui fonctionne tres bien
    comme je doit mettre 4 giga de donnes dans ma base , le fichier log explose a chaque fois. J'ai limité la taille de mon fichier log (dans les proprité) mais a chque fois quand il atteint cette taille la mise a jours s'arrete , moi j'ai pensé le faite de limité la taille du log et en mettant l'autoshrink a true cela me schrink le log et la mise a jours continue mais enfin de compte non car la mise ajour s'arrete carrement.

    est ce que vous avez une idéé ??
    merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Par défaut
    salut,

    t'a moyen de mettre ton script en ligne ?

    Tu peux essayer de faire des mises à jour "par paquet" et entre deux packets, mettre des :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    checkpoint
    dump transaction MABASE with no_log
    DBCC SchrinkDB(tempDB)
    DBCC SchrinkDB(MABASE)
    Ca va ralentir ta mise à jour c'est clair mais au moins tu fais pas péter les logs de tempDB et de ta base

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 121
    Par défaut
    voici mon scripte qui est tres simple c'est un transfert de données d'une base a une autre qui respet bien sure un critere

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    insert into Base1..Table1  (c1, c2, c3, c4) 
    select 
    distinct
    O2.cc1
    , O2.cc2
    , O2.cc3
    , O2.cc4
    from 		Base1..table2 O1 
    inner join 	base2..table3 O2 
    ON		(O1.cc1 = O2.cc1 AND O1.vv1 = 600)
    1- comment je fait pour faire ca en paquet
    2- a quel endroit je fait le shrink (chekpoint).
    3- pourquoi faire un shrink de tempDB.
    4- est ce que ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec sp_dboption 'Base1','trunc. log on chkpt.', 'true'
    peut me servir

    merci d'avance

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Par défaut
    Citation Envoyé par Babylonne
    voici mon scripte qui est tres simple c'est un transfert de données d'une base a une autre qui respet bien sure un critere

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    insert into Base1..Table1  (c1, c2, c3, c4) 
    select 
    distinct
    O2.cc1
    , O2.cc2
    , O2.cc3
    , O2.cc4
    from 		Base1..table2 O1 
    inner join 	base2..table3 O2 
    ON		(O1.cc1 = O2.cc1 AND O1.vv1 = 600)
    1- comment je fait pour faire ca en paquet
    2- a quel endroit je fait le shrink (chekpoint).
    3- pourquoi faire un shrink de tempDB.
    4- est ce que ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec sp_dboption 'Base1','trunc. log on chkpt.', 'true'
    peut me servir

    merci d'avance
    Salut,

    plusieurs pistes à creuser, car il faudrait regarder les données pour trouver "la moins pire" des solutions :

    1- Est-il envisageable, puisque ce sont des transferts de base à base, d'utiliser un lot DTS ou passer par un fichier à plat ? C'est une alternative qui doit être envisagée si le reste des optimisations n'apportent rien.

    2- Quand j'écrivais "paquets" c'est pas clair, je voukais dire "fourchette". Ta colonne CC1 est-elle numérique de telle sorte que tu puisses faire l'insert de (0 à 100), faire le checkpoint puis shrink, insertion de (101 à 201), chekpoint, shrink, etc, etc... ?

    3- Le shrink de tempDB n'est certs pas obligatoire, je l'avais mis dans le cas où tu faisais appel spécifiquement à des requetes qui font travailler tempDB. Ceci dit, cela ne fait jamais de mal

    4- exec sp_dboption 'Base1','trunc. log on chkpt.', 'true' veut dire que tu tronques les logs à chaque checkpoint. Encore faut-il faire le checkpoint . Et ensuite, cela ne réduit pas la taille du fichier des logs, mais parfois, pour des raisons de perfs, il vaut mieux laisser le fichier des logs à sa taille maximale, sans pour autant qu'il soit plein. Je laisse le soin aux pros, aux vrais DBAs, d'en expliquer la raison.

    Cdlt

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 121
    Par défaut
    merci pour votre reponse
    1- je ne peux pas utliser les DTS car se cript est dans un programme (un projet builder c++) , c'est vrai pour le test je l'execute a part mais enfin de compte il sera utliser dans un programme.

    2- malheresement il n' y a aucun moyen qui me permet de partager en paquet. car je n'ai pas une numérotation.

    je suis vraiment perdu devant ce probelem que je doit resoudre au plus tard aujourd'hui

    si vous avez une autre idee , n'hesiter pas a me la soufler
    merci d'avance

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    434
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 434
    Par défaut
    Citation Envoyé par Babylonne
    merci pour votre reponse
    1- je ne peux pas utliser les DTS car se cript est dans un programme (un projet builder c++) , c'est vrai pour le test je l'execute a part mais enfin de compte il sera utliser dans un programme.
    Sauf erreur de ma part (suis pas du tout un expert C++) tu peux exécuter des objets sur un serveur MSSQL pourvu que tu es les droits de le faire.

    Dans le cas présent, pourquoi ne pas faire ton lot DTS et appelé son exécution en C++

    Mais vu la rapidité de ton besoin, ce sera trop long...

    Y'a combien de lignes dans la table que tu souhaites dupliquer ?
    Quelle est le type de la colonne CC1?

Discussions similaires

  1. Mise en page d'un fichier log
    Par RubRub dans le forum Logging
    Réponses: 1
    Dernier message: 01/07/2009, 16h48
  2. fichier log lors d'un lancement.bat
    Par valauga dans le forum Windows Serveur
    Réponses: 4
    Dernier message: 18/05/2009, 16h29
  3. Réponses: 0
    Dernier message: 30/08/2007, 16h46
  4. IOError lors de la mise à jour d'un fichier
    Par oiffrig dans le forum Général Python
    Réponses: 3
    Dernier message: 09/03/2007, 19h13
  5. Réponses: 19
    Dernier message: 25/10/2006, 15h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo