J'utilise SQL Server 2008 Enterprise. Je me demande si le problème de verrou mortel est uniquement causé par des dépendances croisées (par exemple, la tâche A est verrouillée sur L1 mais attend le verrou sur L2 et en même temps, la tâche B verrouille sur L2 mais attend le verrou sur L1)? Y a-t-il d'autres raisons et scénarios qui entraîneront une impasse?Problème de blocage de SQL Server
Y a-t-il un autre moyen qui entraînera un verrouillage à l'état mort - par ex. timeout (une instruction S/I/D/U ne retourne pas très longtemps, et une erreur de blocage sera renvoyée) ou ne peut pas acquérir de verrou pendant longtemps mais pas en raison de dépendances croisées (par exemple, la tâche C doit être verrouiller sur la table T, mais une autre tâche D acquiert le verrou sur la table T sans relâcher la serrure, ce qui fait que la tâche C ne peut pas se verrouiller sur la table T pendant longtemps)?
EDIT 1: cette procédure de stockage entraînera-t-elle un interblocage si elle est exécutée par plusieurs threads en même temps?
create PROCEDURE [dbo].[FooProc]
(
@Param1 int
,@Param2 int
,@Param3 int
)
AS
DELETE FooTable WHERE Param1 = @Param1
INSERT INTO FooTable
(
Param1
,Param2
,Param3
)
VALUES
(
@Param1
,@Param2
,@Param3
)
DECLARE @ID bigint
SET @ID = ISNULL(@@Identity,-1)
IF @ID > 0
BEGIN
SELECT IdentityStr FROM FooTable WHERE ID = @ID
END
merci à l'avance, George
1. Ainsi les deux scénarios que je décris ne peuvent pas produire deadlock error - timeout (une instruction S/I/D/U ne revient pas très longtemps, et une erreur de blocage sera renvoyée) ou ne peut pas acquérir de verrou pendant une longue période mais n'est pas provoquée par des dépendances croisées? 2. Avez-vous des documents prouvant que seules les interdépendances entraîneront une impasse? – George2
La page wikipedia à http://en.wikipedia.org/wiki/Deadlock en parle en détail. Si vous avez un processus bloqué, vérifiez que vous n'avez pas une session SSMS ouverte qui maintient des verrous sur quelque chose qu'il veut (cela a l'habitude de causer des problèmes de verrouillage mystérieux si vous ne faites pas attention). Pour tester cela, il suffit de déconnecter toutes les sessions ouvertes que vous avez dans les SSM. – ConcernedOfTunbridgeWells
J'ai lu le lien wikipedia, semble que seules les interdépendances vont provoquer un blocage mortel? Et le délai d'attente ne sera pas considéré comme une impasse? – George2