2009-03-16 11 views
0

Cas 1:Les transactions SQL Server 2000+ sont-elles dépendantes?

  1. Je commence une connexion à la DB
  2. Je Prépare une transaction
  3. Je ferme la connexion

    Qu'est-ce qui arrive à la transaction?

Cas n ° 2:

  1. Je commence une connexion à la DB
  2. Je Prépare une transaction
  3. Je commence une connexion simultanée à la même DB
  4. Avec la deuxième connexion I modifier le contenu d'une table
  5. Avec la première connexion, je ROLLBACK la TRANSACTION

    Qu'advient-il des modifications?

Répondre

2

Cas 1: Faire reculer le

Cas n ° 2: à l'étape 4, vous ne pouvez pas modifier les lignes qui sont touchées par la première connexion donc il n'y a pas d'effet: la deuxième connexion ne peut pas modifier, il attendra (à cause des verrous).

+0

Qu'est-ce que c'est que ce "toucher"? Si la première connexion modifie la ligne 1 de la table A, cela signifie que les autres lignes ne sont pas touchées et qu'elles peuvent être modifiées par la deuxième connexion pendant la transaction? –

+0

qui dépend des verrous pris par le serveur SQL. –

+0

@Jader: 'touché' comme dans: lecture/modification en tant que connexion 1 fixe les verrous sur les lignes lues/modifiées et la connexion 2 doit y obéir. Si la première transaction est définie sur readuncommitted comme isolation, la connexion deux peut lire les lignes modifiées, mais ne les modifie pas –

1

Juste pour ajouter: Les transactions dépendent de la session - ceci explique votre première question.

Questions connexes