Archives de l’auteur : rudib

inspection des verrous posés sur une table

requête sur les vues de gestion dynamique pour voir quels verrous sont posés à l’instant, sur une table, en indiquant le code des requêtes qui verrouillent.

SELECT
    l.resource_type,
    l.resource_subtype,
    l.resource_lock_partition,
    l.request_mode,
    l.request_type,
    l.request_session_id,
    t.text
FROM sys.dm_tran_locks l
JOIN sys.dm_exec_requests r ON l.request_request_id = r.request_id
    AND l.request_session_id = r.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE resource_database_id = DB_ID('MaBase')
AND resource_associated_entity_id = OBJECT_ID('MaTable');

vérifier l’impact des déclencheurs sur les performances d’écriture

Les déclencheurs (triggers) peuvent avoir un impact important sur les performances de modifications de données sur une table. Vous pouvez utiliser le profiler pour tracer l’exécution des triggers. Cette exécution n’apparaît pas de façon détaillée si vous tracer des événements comme SQL:BatchCompleted.
Vous devez ajouter l’événement SP:stmtCompleted.
En effet, un trigger est considéré comme une procédure stockée, et cet événement vous montrera les lignes du trigger exécutées, et les informations classiques de performance (reads, writes, cpu, duration).
Pour tracer un trigger en particulier, filtrez par les colonnes DatabaseId et ObjectId de la trace. Par exemple, pour voir l’activité d’un trigger nommé atr_u_contact_check dans la base ContactDB, récupérez les Id de la base et du trigger ainsi:

SELECT DB_ID('ContactDB');
SELECT OBJECT_ID('atr_u_contact_check')