Par intermittence dans notre application, nous rencontrons des LockTimeoutExceptions lancées par SQL CE. Nous avons récemment effectué une mise à niveau vers la version 3.5 SP 1, et un certain nombre d'entre elles semblent avoir disparu, mais nous les voyons encore occasionnellement. Je suis certain qu'il s'agit d'un bogue dans notre code (qui est multithread), mais je n'ai pas été en mesure de le localiser précisément. Quelqu'un a-t-il de bonnes techniques pour déboguer ce problème ? Les exceptions s'affichent comme suit (il n'y a jamais de trace de pile pour ces exceptions) :
SQL Server Compact a dépassé le délai d'attente d'un verrou. Le délai de verrouillage par défaut est de 2000 ms pour les périphériques et 5000 ms pour les ordinateurs de bureau. Le délai de verrouillage par défaut peut être augmenté dans la chaîne de connexion à l'aide de la propriété ssce : default lock timeout. [ Session id = 6,Thread id = 7856,Process id = 10116,Table name = Product,Conflict type = s lock (x blocks),Resource = DDL ]
Notre base de données est très sollicitée en lecture, mais fait rarement des écritures, et je piense en J'ai tout protégé là où il faut.
EDIT : SQL CE utilise déjà automatiquement NOLOCK http://msdn.microsoft.com/en-us/library/ms172398(sql.90).aspx