234
Chapitre 7. Transactions et verrous
lockTimeout="4294967295" clientoption1="671090784"
clientoption2="390200">


CREATE TABLE dbo.testblocage ( id int )
BEGIN TRAN
INSERT dbo.testblocage ( id ) VALUES( 1 )





7
289041
13843000
2008-05-15T13:16:40.793
0
0
BABALUGA-XPS\SQL2005
3
AQ==
1134
1


Vous pouvez voir que le rapport inclut les informations des deux sessions, la bloquante () et la bloquée (), avec les input buffers (les caches de la dernière instruction de la session) de chacune.
La façon correcte de recevoir l’événement est d’utiliser l’instruction RECEIVE, qui
permet de lire une file d’attente Service Broker et de la vider des lignes récupérées.
RECEIVE peut insérer à son tour le résultat dans… une variable de type table seulement. C’est pour cette raison que nous en utilisons une dans le code suivant. Nous
plaçons l’extraction de la queue dans une transaction, afin d’annuler la suppression
générée par RECEIVE en cas de problème. L’exemple démontre aussi l’utilisation de
XQuery pour l’extraction des informations dans la structure XML, à l’aide des
« méthodes » value et query.
CREATE TABLE dbo.BlockedProcesses (
message_body xml NOT NULL,
report_time datetime NOT NULL,
database_id int NOT NULL,
process xml NOT NULL
)
GO
BEGIN TRY
BEGIN TRAN
DECLARE @BlockedProcesses TABLE (
message_body xml NOT NULL,
Précédent

- 246/334

Suivant