12
votes

Comment identifier une impasse dans SQL Azure?

J'ai un rôle d'azur de Windows qui consiste en deux cas. Une fois dans un moment, une transaction échouera avec un SQLException avec le texte suivant

transaction (ID de processus N) a été imputable à des ressources de verrouillage avec un autre processus et a été choisi comme victime de blocage. Revenir à la transaction.

Maintenant, j'ai Googled pendant un moment et lisez Ce message sur l'identification des blocages à l'aide des journaux SQL Server.

Le problème est ...

Comment puis-je le faire dans SQL Azure? Quels outils dois-je utiliser pour accéder aux internes de SQL Azure et avoir suffisamment de données?


1 commentaires

Si vous ne trouvez pas et que vous n'êtes pas acceptable, n'hésitez pas à contacter directement Microsoft. Microsoft verse beaucoup de ressources à Azure et au soutien qu'ils donnent aux développeurs d'Azure depuis que M. Guthrie a repris est plutôt impressionnant. Si cela échoue, je tiens à garder un œil sur ce fil et que je connais des MVP d'azur direct avec qui je sais pour répondre à ce fil comme j'aimerais connaître la réponse moi-même.


3 Réponses :


5
votes

La surveillance de SQL Azure est plus limitée que SQL Server, mais les outils deviennent de plus en plus disponibles pour que vous puissiez regarder dessous:

http: //social.technet.microsoft.com/wiki/contents/articles/troubleShoot-and-optimize-queries-with-sql-azure.aspx


0 commentaires

4
votes

Exécutez la requête suivante sur la base de données "Master" dans SQL AZURE DB,

SELECT *
,CAST(event_data AS XML).value('(/event/@timestamp)[1]', 'datetime2') AS TIMESTAMP
, CAST(event_data AS XML).value('(/event/data[@name="error"]/value)[1]', 'INT') AS error
,CAST(event_data AS XML).value('(/event/data[@name="state"]/value)[1]', 'INT') AS STATE
,CAST(event_data AS XML).value('(/event/data[@name="is_success"]/value)[1]', 'bit') AS is_success
,CAST(event_data AS XML).value('(/event/data[@name="database_name"]/value)[1]', 'sysname') AS database_name
FROM sys.fn_xe_telemetry_blob_target_read_file('dl', NULL, NULL, NULL)
WHERE object_name = 'database_xml_deadlock_report'


2 commentaires

Je ne pense pas que l'une ou l'autre de ces questions travaillent dans V12. Pour moi, la première requête de SyS.Event_Log renvoie des lignes, mais pas de XML. Sur la même base de données, la deuxième requête ne renvoie aucune ligne de lignes.


Ont essayé à la fois les requêtes ci-dessus et aucun d'entre eux ne renvoie l'impasse XML. Première requête ne sera pas complète, Second Query Runs mais l'événement Shased_Data Column est Null Azure SQL La version de base de données SQL est Microsoft SQL Azure (RTM) - 12.0.2000.8 oct. 2020 18:48:35 Copyright (c) 2019 Microsoft Corporation



2
votes

La base de données Azure SQL prend maintenant deux façons d'obtenir des rapports XML deadlock XML. Vous pouvez créer une session XE DB-Scoped XE avec l'événement de base de données_xml_deadlock_report pour les suivre vous-même, ou vous pouvez modifier l'appel SYS.FN_XE_TelemeRY_blob_Target_read_file de la réponse antérieure pour utiliser 'DL'. Les blocages sont maintenant acheminés vers leur propre fichier au lieu d'être mélangés avec des événements de connexion.

Ce Article MSDN a le Dernières informations.


0 commentaires