none
Vues & serveurs liés RRS feed

  • Question

  • Bonsoir à tous

    J'ai une base A liée à une base B

    J'ai une vue dans la base A qui prend les données dans la base B

    Lors d'une action sur la vue dans la base A, dois-je la traiter comme une requête distribuée avec :

    SET XACT_ABORT ON

    BEGIN DISTRIBUTED TRANSACTION

    ma transaction distribuée

    COMMIT TRANSACTION

    SET XACT_ABORT OFF

    Ou pas besoin puisqu'elle est dans la même base ???

    D'avance merci pour votre aide

    @+

    mardi 1 décembre 2009 19:51

Réponses

  • Merci pour votre réponse.

    Pour synthétiser peut dire ceci :

    Ayant 2 base de données A & B sur 2 instances distinctes, les 2  bases étant liées :

    1. Si je crée une vue Vue1 dans la BD B qui lit des données dans la base A, si je ne fait que des lectures (select ...) dans cette vue Vue1, il n'y a pas besoin de transactions distribuées.
    2. Par contre si au travers de cette Vue1, je fais des Mises à jour (update) ou des insertions (insert), dans ce cas il faudra des transactions distribuées.
    Aie-je tout bon????

    Merci de vos réponses.

    Cordialement,


    A mon sens oui, c'est comme çà !


    Christian Robert - MVP SQL Server
    Blog : http://blogs.codes-sources.com/christian/
    Groupe des Utilisateurs Francophone de SQL Server : http://www.guss.fr
    • Marqué comme réponse AMDMAN_fr mardi 5 janvier 2010 16:30
    mardi 5 janvier 2010 14:22

Toutes les réponses

  • Bonsoir,

    Si vos bases se trouvent sur le même serveur , vous n'avez pas besoin des serveurs liées et gérer des transactions distribuées.


    ++


    MCDBA | MCITP SQL Server 2005 | MCTS SQL Server 2008 | LPI Linux 1
    lundi 7 décembre 2009 19:13
    Modérateur
  • Bonsoir Mikedavem,

    D'abord merci pour votre réponse.

    Je viens d'acheter un livre de Microsoft press, il est dit ceci:

    "Fondamentalement, les requêtes & les transactions sont  distribuées lorsqu'elles mettent en jeu plusieurs instances de base de données".

    Ce qui corrobore vos dires.

    Concernant ma question, j'ai quand même un doute, parce que la vue que j'utilise est bien interne à mon instance, mais elle pointe sur une autre instance.

    Donc dans mon esprit, lorsque je fait un select sur cette vue, le select se fait bien en interne, mais si les données proviennent d'une autre instance.

    Quand pensez-vous????

    Merci,

    Cordialement,

    @+
    mardi 8 décembre 2009 16:49
  • Bonjour,

    Oui en effet le fait d'avoir une vue qui va lire les données d'une autre instance ajoute un aspect distribué à l'ensemble.

    Par contre, s'il a uniquement des données lues au travers de cette vues et que les mises à jour ne conscerne que les tables des bases de données locale, il n'y a pas de raison qu'il ai une transaction distribuée.

    Cordialement

    Christian Robert - MVP SQL Server
    Blog : http://blogs.codes-sources.com/christian/
    Groupe des Utilisateurs Francophone de SQL Server : http://www.guss.fr
    mardi 22 décembre 2009 10:48
  • Merci pour votre réponse.

    Pour synthétiser peut dire ceci :

    Ayant 2 base de données A & B sur 2 instances distinctes, les 2  bases étant liées :

    1. Si je crée une vue Vue1 dans la BD B qui lit des données dans la base A, si je ne fait que des lectures (select ...) dans cette vue Vue1, il n'y a pas besoin de transactions distribuées.
    2. Par contre si au travers de cette Vue1, je fais des Mises à jour (update) ou des insertions (insert), dans ce cas il faudra des transactions distribuées.
    Aie-je tout bon????

    Merci de vos réponses.

    Cordialement,

    samedi 26 décembre 2009 17:05
  • Merci pour votre réponse.

    Pour synthétiser peut dire ceci :

    Ayant 2 base de données A & B sur 2 instances distinctes, les 2  bases étant liées :

    1. Si je crée une vue Vue1 dans la BD B qui lit des données dans la base A, si je ne fait que des lectures (select ...) dans cette vue Vue1, il n'y a pas besoin de transactions distribuées.
    2. Par contre si au travers de cette Vue1, je fais des Mises à jour (update) ou des insertions (insert), dans ce cas il faudra des transactions distribuées.
    Aie-je tout bon????

    Merci de vos réponses.

    Cordialement,


    A mon sens oui, c'est comme çà !


    Christian Robert - MVP SQL Server
    Blog : http://blogs.codes-sources.com/christian/
    Groupe des Utilisateurs Francophone de SQL Server : http://www.guss.fr
    • Marqué comme réponse AMDMAN_fr mardi 5 janvier 2010 16:30
    mardi 5 janvier 2010 14:22


  • Merci beaucoup à tous pour vos réponses et votre aide.

    J'ai remarqué que les transactions distribuées prenaient énormément de temps :

    Dans une procédure stockée qui fait des calculs pour 1200 comptes clients ; durée de la procédure stockée 5 secondes grand maximum.

    Je change ma procédure stockée en y incluant un update d'une vue (la même que celle de l'exemple ci-dessus) en transaction distribuée, donc 1200 updates une par une (pas dans un lot) durée de la procédure stockée 1minute 45s !!!!! rien que ca, par contre en faisant l'update en un a lot, pas de changement de durée.
    mardi 5 janvier 2010 16:39