web-dev-qa-db-fra.com

Que signifie "verrouiller | ressources de tampon de communication"?

J'ai un journal des erreurs qui signale un blocage:

La transaction (ID de processus 55) était bloquée sur lock | ressources de mémoire tampon de communication avec un autre processus et choisi comme victime de l’impasse. Relancez la transaction.

J'essaie de reproduire cette erreur, mais mon code SQL d'interblocage standard génère une erreur différente :

La transaction (ID de processus 54) était bloquée sur verrouiller les ressources avec un autre processus et a été choisie comme victime de l'impasse. Relancez la transaction.

Je veux être très clair sur le fait que je ne demande pas ce qu'est une impasse . Je comprends les bases.

Ma question est la suivante: quelle est la signification de lock | communication buffer resources dans ce contexte? Que sont les "ressources de tampon de communication"? Le lock | signifie-t-il quelque chose?

Ma meilleure hypothèse est qu'un tampon de communication est utilisé lorsque des threads parallèles combinent leurs résultats. Quelqu'un peut-il confirmer ou infirmer cela?

Mon but ultime est de déclencher d’une manière ou d’une autre la première erreur.

20
Blorgbeard

Votre problème est lié au parallélisme et l'erreur n'a "aucune signification" car le message d'erreur ne reflète pas votre problème et ne vous en empêche pas et ne modifiez pas les paramètres de maxdope. afin de connaître la cause de l'erreur, vous devez utiliser l'indicateur de trace 1204 , consultez comment utiliser l'indicateur de trace et les informations que vous obtenez

Quand vous faites cela, vous obtenez la réponse quant à pourquoi, où et quelle ligne de code a provoqué le verrouillage. Je suppose que vous êtes capable de google votre auto à partir de ce point, et sinon sinon le poster et vous obtiendrez la réponse dont vous avez besoin. 

1
Walter Verhoeven

Vous pouvez utiliser MAXDOP 1 comme indication de requête - c’est-à-dire exécuter cette requête sur un processeur - sans affecter le reste du serveur.

Cela évitera l'erreur pour cette requête - ne vous dit pas pourquoi elle échoue, mais fournit une solution de contournement si vous devez la faire fonctionner rapidement :-)

0
user240084