2010-09-09 18 views
0

J'ai besoin de lire les entrées sales dans le serveur Sql mais je ne comprends pas pourquoi je ne peux pas. J'espère que vous allez aider. J'ai deux onglets en studio de gestion avec le code suivant
Tab 1:Lire le niveau d'isolement non validée ne permet pas de lire les entrées

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 
GO 
BEGIN TRAN 
    UPDATE decision.tRequests 
    SET IsComplete = 0 

    WAITFOR DELAY '00:00:25.000'   
COMMIT TRAN 

Tab 2:

SELECT * FROM decision.tRequests 

Quand je lance tab1 puis tab2 je peux voir que la requête à partir tab2 prend plus que 25 secondes pour terminer. Lors de l'exécution du script forme tab2 sans tab1, il faut 0 secondes pour terminer.
Pourquoi même si j'ai SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED sont les entrées bloquées?

+0

Arrêtez et penser à ce que vous essayez de faire ici. Vous mettez à jour l'intégralité de la table lors de votre première transaction et, tant qu'elle est ouverte, vous essayez de lire à partir de cette table avec le niveau d'isolement read commited (par défaut) dans une autre transaction. Utilisez des lectures incorrectes ou l'isolement d'instantanés dans votre transaction de lecture pour éviter les temps d'attente. –

Répondre

2

Vous devez définir SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED dans Tab2 et non dans Tab1. Tab2 sera toujours exécuté sous le niveau READ COMMITTED par défaut.

1

dans Tab 2

SELECT * FROM decision.tRequests with (nolock)