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

Administration SQL Server Discussion :

Fonctionnement - Open transaction et Journal de transaction


Sujet :

Administration SQL Server

  1. #1
    Membre éprouvé Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Points : 1 107
    Points
    1 107
    Par défaut Fonctionnement - Open transaction et Journal de transaction
    Hello,

    Je ne comprend pas bien la situation, pourtant simple, merci de m'orienter un peu

    Quand je regarde dans sys.sysprocesses j'ai une Session pour laquelle open_tran est à 1.

    Nom : sysprocesses.PNG
Affichages : 168
Taille : 8,1 Ko

    La requête exécutée par la transaction est un DELETE :
    Nom : delete2.png
Affichages : 162
Taille : 9,8 Ko

    Quand je fais DBCC OPENTRAN, je ne vois rien du tout.
    Pareil pour les locks. Je n'apprend rien si ce n'est que la session est connecté à la BDD ce qui est normal..

    Nom : lock.PNG
Affichages : 155
Taille : 8,2 Ko

    Donc cette transaction est ouverte depuis plusieurs jours.
    Elle a fait un DELETE.
    Si la transaction est considérée comme "Open" c'est qu'il n'y a pas eu de COMMIT ou ROLLBACK.
    Pourquoi est-ce que rien n'a été écris dans le journal de transactions et pourquoi je n'ai aucun Lock, bref pourquoi elle est "Open" ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Hello Oishiiii ;-)

    Plusieurs choses,

    L'utilisation de la vue sys.sysprocesses est dépréciée et l'information fournie par le sql_handle peut prêter à confusion maintenant. La valeur du hash généré n'est valable uniquement que lorsque la requête est en train de s'exécuter. Tu peux tester avec n'importe quelle autre requête pour vérifier. Dans ton cas, tu peux très bien avoir une transaction ouverte mais dans un état dormant et dans ce cas le sql_handle ne sera plus fiable. Il vaut mieux utiliser les DMV destinées à remplacer cette vue de compatibilité (sys.dm_exec_requests, sys.dm_exec_sessions et sys.dm_exec_connections). Tu verras que le résultat sera tout à fait différent.

    Pourquoi est-ce que rien n'a été écris dans le journal de transactions et pourquoi je n'ai aucun Lock
    Par ailleurs, il se peut que DBCC OPENTRAN n'affiche rien dans ton cas surtout si la requête n'est pas celle que tu crois. Il faut savoir que DBCC OPENTRAN va lire dans le journal des transactions pour détecter une transaction ouverte. Cela rejoint un peu ton interrogation et ce qui me fait penser que ta transaction ne correspond pas à un DELETE (pour laquelle tu trouverais très probablement quelque chose). L'absence des locks va également dans ce sens.

    Tu peux essayer d'utiliser cette requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select 
    	tst.session_id,
    	tst.is_user_transaction,
    	tst.is_local,
    	tst.open_transaction_count,
    	t.dtc_isolation_level,
    	t.transaction_begin_time
    from sys.dm_tran_session_transactions as tst
    join sys.dm_tran_active_transactions as t
    	on tst.transaction_id = t.transaction_id
    join sys.dm_exec_connections as c
    	on c.session_id = tst.session_id
    where tst.session_id = <tasession>
    ++

  3. #3
    Membre éprouvé Avatar de Oishiiii
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2009
    Messages : 508
    Points : 1 107
    Points
    1 107
    Par défaut
    Merci David, je vais regarder ça

Discussions similaires

  1. Réponses: 10
    Dernier message: 23/03/2012, 12h09
  2. Journal de transaction
    Par zamine81 dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 01/08/2005, 14h05
  3. Réduction du Journal de transactions SQL Server
    Par Aki dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/10/2004, 09h15
  4. Automatisation de la purge du journal des transactions
    Par Nathan dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 30/09/2004, 08h05
  5. vider le journal des transactions
    Par coucoucmoi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/05/2004, 09h21

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