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

Développement SQL Server Discussion :

[SQL2005] Procedure & Transaction


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Points : 6
    Points
    6
    Par défaut [SQL2005] Procedure & Transaction
    Bonjour a tous,
    C'est la 1ère fois que je poste sur ce forum car jusqu'a maintenant j'ai toujours trouvé une réponse et je vous remercie d'avance pour l'aide que vous m'avez déjà apporté et celle à venir ....
    Mais pour une fois, je sèche ....

    je m'explique...

    Environnement utilisé : SQL server 2005 sur un Windows server 2003


    je dois réaliser une query SQl.
    C'est une procédure stockée qui est appelée a partir d'un service Windows réalisé en C#.
    Cette procédure stockée fait appelle a un enchainement de différente procédure stockée...

    En gros j'ai une procédure qui appelle plusieurs procédures, qui elle même réalise certain traitement et appelle parfois d'autre procédure.
    Ayant pour but de rassembler suite à un événement un paquet de donnée et de les envoyés.

    Ce qui fait énormément de traitement de donnée.
    le problème est que je dois revenir au point d'origine si un et une seul erreur c'est produite dans une des procédures.
    Alors comment faire ?


    - Ce que je voulais savoir c'est si je fait une transaction (commit - rollback) a partir de ma procédure principale est ce que cela implique et impact également les autres procédures qui ont été appelé ?

    - et comme dans ma méthode en c# j'appelle cette procedure si je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    transaction.Commit;
    transaction.Rollback;
    est que cela implique et impact également les autres procédures qui ont été appelé ?


    Je suis ouvert à toute idée venant de votre part.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    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 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Karln Voir le message
    - Ce que je voulais savoir c'est si je fait une transaction (commit - rollback) a partir de ma procédure principale est ce que cela implique et impact également les autres procédures qui ont été appelé ?
    Oui

    Citation Envoyé par Karln Voir le message
    - et comme dans ma méthode en c# j'appelle cette procedure si je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    transaction.Commit;
    transaction.Rollback;
    est que cela implique et impact également les autres procédures qui ont été appelé ?
    Oui !

    Mais il est préférable de piloter les transactions côté serveur !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    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 : 42
    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,

    Exact, en déclarant explicitement la transaction par un BEGIN TRANSACTION ... COMMIT TRANSACTION.
    Vous pouvez gérer également le ROLLBACK dans le CATCH introduit avec SQL Server 2005 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    CREATE PROCEDURE maProcedureQuiEnAppelleDAutres
    	@parametres types
    AS
    BEGIN
    	SET NOCOUNT ON
     
    	BEGIN TRY
    		BEGIN TRANSACTION maTransaction
     
    			EXEC maProc 1
    			EXEC maProc 2
    			EXEC maProc ...
    			EXEC maProc n
     
    		COMMIT TRANSACTION maTransaction
    	END TRY
    	BEGIN CATCH
    		DECLARE @errMsg NVARCHAR(2048)
    		SELECT @errMsg = ERROR_MESSAGE()
     
    		ROLLBACK TRANSACTION maTransaction
     
    		RAISERROR(@errMsg, 16, 1)
    	END CATCH
    END
    @++

  4. #4
    Futur Membre du Club
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    4
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2009
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup,
    je viens tester cela côté code C# et cela fonctionne parfaitement ....
    Maintenant, je vais essayer de déporter cela côté SQL afin de suivre votre conseille ....
    Pour info, j'ai pour ma part appris que ce systéme de transaction accepte jusque 32 procédure stockée en cascade ...

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

Discussions similaires

  1. procedure stockee, transaction et delphi
    Par asenaici dans le forum SQL
    Réponses: 0
    Dernier message: 12/04/2012, 11h04
  2. 2.0 transaction FirebirdSQL par une procedure
    Par juniorAl dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/03/2009, 21h51
  3. demarrer une transaction dans une procedure stockee
    Par richard038 dans le forum SQL
    Réponses: 1
    Dernier message: 04/11/2005, 13h09
  4. [Debutant]Insertion dans une table, Transaction et Procedure
    Par etiennegaloup dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 01/11/2005, 16h47
  5. Apropos des Transactions au sein d'un Stored Procedure
    Par Sarbacane dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 16/11/2004, 08h21

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