Analyser des blocages à l'aide de SQL Server ProfilerAnalyze Deadlocks with SQL Server Profiler

S’applique à :Applies to: ouiSQL ServerSQL Server (toutes les versions prises en charge) yesSQL ServerSQL Server (all supported versions) S’applique à :Applies to: ouiSQL ServerSQL Server (toutes les versions prises en charge) yesSQL ServerSQL Server (all supported versions)

Utilisez le SQL Server ProfilerSQL Server Profiler pour identifier la cause d'un interblocage.Use SQL Server ProfilerSQL Server Profiler to identify the cause of a deadlock. Un interblocage se produit quand il y a une dépendance cyclique entre au moins deux threads ou processus pour un jeu de ressources dans SQL Server.A deadlock occurs when there is a cyclic dependency between two or more threads, or processes, for some set of resources within SQL Server. Le SQL Server ProfilerSQL Server Profilervous permet de créer une trace qui enregistre, relit et affiche les événements de blocage dans le cadre d'une analyse.Using SQL Server ProfilerSQL Server Profiler, you can create a trace that records, replays, and displays deadlock events for analysis.

Pour tracer les événements de blocage, ajoutez la classe d’événements Deadlock graph à une trace.To trace deadlock events, add the Deadlock graph event class to a trace. Cette classe d’événements remplit la colonne de données TextData dans la trace avec des données XML relatives aux processus et objets impliqués dans le blocage.This event class populates the TextData data column in the trace with XML data about the process and objects that are involved in the deadlock. SQL Server ProfilerSQL Server Profiler peut extraire le document XML dans un fichier XML de blocages (.xdl) que vous pouvez afficher ultérieurement dans SQL Server Management Studio.can extract the XML document to a deadlock XML (.xdl) file which you can view later in SQL Server Management Studio. Vous pouvez configurer le SQL Server ProfilerSQL Server Profiler de manière à extraire les événements Deadlock graph vers un fichier unique contenant tous les événements Deadlock graph , ou bien vers des fichiers distincts.You can configure SQL Server ProfilerSQL Server Profiler to extract Deadlock graph events to a single file that contains all Deadlock graph events, or to separate files. Cette extraction peut être réalisée de l'une des manières suivantes :This extraction can be done in any of the following ways:

  • Au moment de la configuration de la trace, à l’aide de l’onglet Paramètres d’extraction des événements . Cet onglet n’apparaît que si vous sélectionnez l’événement Deadlock graph sous l’onglet Sélection des événements .At trace configuration time, using the Events Extraction Settings tab. Note that this tab does not appear until you select the Deadlock graph event on the Events Selection tab.

  • À l’aide de l’option Extraire les événements SQL Server du menu Fichier .Using the Extract SQL Server Events option on the File menu.

  • Vous pouvez également extraire et enregistrer un événement donné en cliquant avec le bouton droit sur celui-ci et en choisissant Extraire les données d’événement.Individual events can also be extracted and saved by right-clicking a specific event and choosing Extract Event Data.

Graphiques de blocageDeadlock Graphs

SQL Server ProfilerSQL Server Profiler et SQL Server Management StudioSQL Server Management Studio utilisent un graphique WAITFOR de blocage pour décrire un blocage.and SQL Server Management StudioSQL Server Management Studio use a deadlock wait-for graph to describe a deadlock. Le graphique WAITFOR de blocage contient des nœuds de processus, des nœuds de ressources et des arêtes qui représentent les relations entre les processus et les ressources.The deadlock wait-for graph contains process nodes, resource nodes, and edges representing the relationships between the processes and the resources. Les composants des graphiques WAITFOR sont définis dans la table suivante :The components of wait-for graphs are defined in the following table:

Nœud de processusProcess node
Thread qui réalise une tâche ; par exemple, INSERT, UPDATE ou DELETE.A thread that performs a task; for example, INSERT, UPDATE, or DELETE.

Nœud de ressourceResource node
Objet de base de données ; par exemple, une table, un index ou une ligne.A database object; for example, a table, index, or row.

EdgeEdge
Relation entre un processus et une ressource.A relationship between a process and a resource. Une arête request se produit quand un processus attend une ressource.A request edge occurs when a process waits for a resource. Une arête owner se produit quand une ressource attend un processus.An owner edge occurs when a resource waits for a process. Le mode de verrouillage est inclus dans la description des arêtes.The lock mode is included in the edge description. Par exemple, Mode : X.For example, Mode: X.

Nœud de processus de blocageDeadlock Process Node

Dans un graphique WAITFOR, le nœud de processus contient des informations sur le processus.In a wait-for graph, the process node contains information about the process. Le tableau suivant décrit les composants d'un processus.The following table explains the components of a process.

ComposantComponent DéfinitionDefinition
ID de processus serveurServer process Id SPID, identificateur affecté par un serveur pour le processus détenant le verrou.Server process identifier (SPID), a server assigned identifier for the process owning the lock.
ID de traitement du serveurServer batch Id Identificateur de traitement du serveur (SBID).Server batch identifier (SBID).
ID du contexte d'exécutionExecution context Id Identificateur du contexte d'exécution (ECID).Execution context identifier (ECID). ID de contexte d'exécution d'un thread particulier associé à un SPID spécifiqueThe execution context ID of a given thread associated with a specific SPID.

ECID = {0,1,2,3, ...n}, où 0 représente toujours le thread principal ou parent et {1,2,3, ...n} les sous-threads.ECID = {0,1,2,3, ...n}, where 0 always represents the main or parent thread, and {1,2,3, ...n} represent the subthreads.
Priorité de blocageDeadlock priority Priorité de blocage du processus.Deadlock priority for the process. Pour plus d’informations sur les valeurs possibles, consultez SET DEADLOCK_PRIORITY (Transact-SQL).For more information about possible values, see SET DEADLOCK_PRIORITY (Transact-SQL).
Journal utiliséLog Used Quantité d'espace journal utilisée par le processus.Amount of log space used by the process.
ID de propriétaireOwner Id ID de transaction des processus qui utilisent des transactions et qui attendent un verrou.Transaction ID for the processes which are using transactions and currently waiting on a lock.
Descripteur de transactionTransaction descriptor Pointeur vers le descripteur de transaction qui décrit l'état de la transaction.Pointer to the transaction descriptor that describes the state of the transaction.
Mémoire tampon d'entréeInput buffer Mémoire tampon d'entrée du processus actuel, qui définit le type d'événement et l'instruction en cours d'exécution.Input buffer of the current process, defines the type of event and the statement being executed. Les valeurs possibles incluent :Possible values include:

LangageLanguage

RPCRPC

AucunNone
.Statement Type d'instruction.Type of statement. Les valeurs possibles sont les suivantes :Possible values are:

NOPNOP

SELECTSELECT

UPDATEUPDATE

INSERTINSERT

DELETEDELETE

UnknownUnknown

Nœud de ressource de blocageDeadlock Resource Node

Dans un blocage, chacun des deux processus attend une ressource détenue par l'autre processus.In a deadlock, two processes are each waiting for a resource held by the other process. Dans un graphique de blocage, les ressources apparaissent sous la forme de nœuds de ressources.In a deadlock graph, the resources are displayed as resource nodes.