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 :

SQL 2000 : forcer un commit dans un update


Sujet :

MS SQL Server

  1. #1
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    344
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 344
    Points : 324
    Points
    324
    Par défaut SQL 2000 : forcer un commit dans un update
    Bonjour,

    Nous lançons un update (exceptionnel) de tables assez lourd, et ça fait exploser le journal des transactions ... Est-il possible (sans avoir à mettre ce fichier en auto-extend qui sera notre ultime solution) de forcer des commit toutes les mille lignes (comme pour un bcp par exemple) ?

    Merci de votre aide

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    Par défaut
    a l'époque où la place et la RAM manquait on faisait par bloc.
    je m'explique.
    supposons que ton update global soit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE TABLE1 SET champ1='tutu' where champ2 between 1 and 10000
    on écrivait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Declare @Max_records int,@count int
    Set @Max_records=100
     
    while(1=1) 
      begin
        set rowcount=@Max_records
        UPDATE TABLE1 SET champ1='tutu' where champ2 between 1 and 10000
        select @count = @@rowcount
        if @count = 0 break
        print string('Updated ',@count,' rows; repeating...')
        commit
      end
    set rowcount 0
    mais depuis SQL7 je ne l'ai plus testé

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 897
    Points : 53 135
    Points
    53 135
    Billets dans le blog
    6
    Par défaut
    Derrière le commit dans la boucle rajoutez un CHECKPOINT.

    A +

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,,

    Pourquoi le fait de mettre CHECKPOINT après avoir commité plusieurs milliers de lignes limitera la taille du log de transactions ?

    En vous remerciant de vos lumières,

    ElSuket.

  5. #5
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    344
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 344
    Points : 324
    Points
    324
    Par défaut
    Merci de votre aide à tous ... En fin de compte, nous avons découpé notre traitement en plusieurs plus petits pour que ça passe plus facilement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL Server 2000] exclusion dernière date dans un between?
    Par biloumousse dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/04/2006, 17h11
  2. Importation MS SQL 6.5 dans MS SQL 2000
    Par charlie-chat dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/12/2005, 05h11
  3. CROSSTAB ::marche dans access mais pas dans MS SQL 2000
    Par anselmeJ dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/11/2005, 07h56
  4. Importation MS SQL 6.5 dans MS SQL 2000
    Par GrimKo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/11/2005, 00h43
  5. Une ch'tite bizarrerie dans les Updates de SQL Server
    Par Wakko2k dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 08/04/2004, 14h14

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