ceturtdiena, 2012. gada 4. oktobris

Extended Events: Strupsaķeres

Pēc vakardienas (2012-10-03) TechDay apmeklējuma ir vēl lielāka interese iepazīties ar Extended Events. Pārsteigums bija tas, ka SQL Server (SQL Server 2008) pēc noklusējuma reģistrē virkni ar dažādiem notikumiem izmantojot Extened Events. Līdzīgi kā noklusētais trace, par ko samērā nesen rakstīju (SQL Server parametrs: "default trace enabled").

Šajā rakstā T-SQL lai pārliecinātos, ka tā tiešām ir  (vaicājumi testēti uz SQL Server 2008 R2 un SQL Server 2008 SP2 Express).
Atšķirībā no Event Notification: Strupsaķeres (deadlock) reģistrēšanai šis vaicājums atlasa datus tikai kopš pēdējās SQL Server pārstartēšanas reizes (Kad SQL Server tika pārstartēts?).

Tātad, lai varētu atlasīt SQL Server reģistrētās strupsaķeres, var izmantot sql (mainīts no šejienes):
Declare @xml xml

Select @xml = CAST(target_data AS XML) -- AS TargetData
FROM sys.dm_xe_session_targets st
    Inner Join sys.dm_xe_sessions s ON s.address = st.event_session_address
WHERE [name] = 'system_health'

Select
    XEventData.XEvent.value('@package', 'nvarchar(max)') Package,
    XEventData.XEvent.value('@name', 'varchar(max)') Name,
    XEventData.XEvent.value('@timestamp', 'DateTime') Date,
    XEventData.XEvent.query('(data/value)[1]') Deadlock,
    cast(XEventData.XEvent.value ('(data/value)[1]', 'varchar(max)') as xml),
    XEvent.query('.') --*
From @xml.nodes('//RingBufferTarget/event') as XEventData (XEvent)
WHERE XEventData.XEvent.value('@name', 'varchar(4000)') = 'xml_deadlock_report';
Noņemot Where daļu var redzēt arī citus reģistrētos notikumus.


Nav komentāru:

Ierakstīt komentāru