2017-08-30 4 views
3

Je suis capture ETW diagnostics ADO.Net, comme décrit dans Data Access Tracing in SQL Server 2008. Le programme d'installation fonctionne, un fichier ETL est produit et je peux voir la trace de ADO.Net si je l'utilise, par exemple, tracerpt:WPA ne voit pas les données d'événement ETW, tracerpt fait

System.Data,  TextA,   0,   0,   0,   0,   17,   0, 0x0000000000000000, 0x000007D0, 0x00003A64,     1,    ,      , {00000000-0000-0000-0000-000000000000},           , 131485096603462277,  450,  2400,  2, "enter_01 <prov.DbConnectionHelper.CreateDbCommand|API> 1# " 
System.Data,  TextA,   0,   0,   0,   0,   17,   0, 0x0000000000000000, 0x000007D0, 0x00003A64,     1,    ,      , {00000000-0000-0000-0000-000000000000},           , 131485096603469806,  450,  2400,  2, "<sc.SqlCommand.set_Connection|API> 1#, 1# " 
System.Data,  TextA,   0,   0,   0,   0,   17,   0, 0x0000000000000000, 0x000007D0, 0x00003A64,     1,    ,      , {00000000-0000-0000-0000-000000000000},           , 131485096603469816,  450,  2400,  2, "leave_01 " 
System.Data,  TextA,   0,   0,   0,   0,   17,   0, 0x0000000000000000, 0x000007D0, 0x00003A64,     1,    ,      , {00000000-0000-0000-0000-000000000000},           , 131485096603471294,  450,  2400,  2, "<sc.SqlCommand.set_CommandText|API> 1#, '" 
System.Data,  TextA,   0,   0,   0,   0,   17,   0, 0x0000000000000000, 0x000007D0, 0x00003A64,     1,    ,      , {00000000-0000-0000-0000-000000000000},           , 131485096603474160,  450,  2400,  2, "select cast(serverproperty('EngineEdition') as int)" 
System.Data,  TextA,   0,   0,   0,   0,   17,   0, 0x0000000000000000, 0x000007D0, 0x00003A64,     1,    ,      , {00000000-0000-0000-0000-000000000000},           , 131485096603474174,  450,  2400,  2, "' " 
System.Data,  TextA,   0,   0,   0,   0,   17,   0, 0x0000000000000000, 0x000007D0, 0x00003A64,     1,    ,      , {00000000-0000-0000-0000-000000000000},           , 131485096603523068,  450,  2400,  2, "<sc.SqlCommand.ExecuteReader|INFO> 1#, Command executed as SQLBATCH. " 

Mais si je charge le même ETL dans WPA je ne vois rien utile sur les événements capturés . Tous les événements de cet affichage fournisseur Event Name<Unknown>, Event TypeClassic et pas d'info sur l'info événement ADO.Net réelle (la colonne de droite dans la sortie CSV tracerpt.):

Line #, Provider Name, Task Name, Type (Opcode/Type), Opcode Name, Id, Process, Annotation, Event Name, Event Type, Message, Cpu, ThreadId, Message, UserDataLength, Time (s) 
1, 914abde3-171e-c600-3348-c514171de148, <Unknown>, 17, , 0, Unknown, <Not Annotated>, <Unknown>, Classic, , 3, 14056, , 0, 22.877068496 
2, 914abde3-171e-c600-3348-c514171de148, <Unknown>, 17, , 0, Unknown, <Not Annotated>, <Unknown>, Classic, , 0, 14056, , 0, 22.877265256 
3, 914abde3-171e-c600-3348-c514171de148, <Unknown>, 17, , 0, Unknown, <Not Annotated>, <Unknown>, Classic, , 0, 14056, , 0, 22.877275482 
4, 914abde3-171e-c600-3348-c514171de148, <Unknown>, 17, , 0, Unknown, <Not Annotated>, <Unknown>, Classic, , 0, 14056, , 0, 22.877276892 
5, 914abde3-171e-c600-3348-c514171de148, <Unknown>, 17, , 0, Unknown, <Not Annotated>, <Unknown>, Classic, , 0, 14056, , 0, 22.877299460 
6, 914abde3-171e-c600-3348-c514171de148, <Unknown>, 17, , 0, Unknown, <Not Annotated>, <Unknown>, Classic, , 0, 14056, , 0, 22.877301223 
7, 914abde3-171e-c600-3348-c514171de148, <Unknown>, 17, , 0, Unknown, <Not Annotated>, <Unknown>, Classic, , 1, 13276, , 0, 23.061972110 
8, 914abde3-171e-c600-3348-c514171de148, <Unknown>, 17, , 0, Unknown, <Not Annotated>, <Unknown>, Classic, , 1, 13276, , 0, 23.061975636 
9, 914abde3-171e-c600-3348-c514171de148, <Unknown>, 17, , 0, Unknown, <Not Annotated>, <Unknown>, Classic, , 1, 13276, , 0, 23.062004550 
10, 914abde3-171e-c600-3348-c514171de148, <Unknown>, 17, , 0, Unknown, <Not Annotated>, <Unknown>, Classic, , 1, 13276, , 0, 23.063588859 
11, 914abde3-171e-c600-3348-c514171de148, <Unknown>, 17, , 0, Unknown, <Not Annotated>, <Unknown>, Classic, , 1, 13276, , 0, 23.063617421 

Comme toutes les autres données que je capture, je peux analyser dans WPA, je me demande ce qui est différent à propos du fournisseur de diag ADO.Net que les événements sont si opaques à WPA? Windows Performance Analyzer lit les données du manifeste à partir du registre pour décoder les événements.

+0

J'ai les mêmes difficultés. Pour info, j'utilise Microsoft Message Analyzer (https://technet.microsoft.com/fr-fr/library/jj649776.aspx) et cela fonctionne (avec exactement le même .etl) avec quelques ajustements –

Répondre

2

Si WPA ne parvient pas à obtenir les données, il affiche uniquement le GUID du fournisseur et <Unknown> pour Taskname et Eventname. Ceux Managed Object Format (MOF) files qui sont par traçage ADO ne sont pas pris en charge par WPA (classique, fournisseur hérité), mais il semble que tracerpt.exe le prend en charge. Pour l'analyse brute des fichiers ETL pour rechercher uniquement des événements, je suggère Perfview.

Il a ses propres parseurs pour obtenir decode Événements:

enter image description here

<Event MSec= "26176,0393" PID="11304" PName="foo" TID="8336" EventName="AdoNetDiag/TextW" 
    TimeStamp="09.02.17 16:47:39.338496" ID="Illegal" Version="0" Keywords="0x00000000" TimeStampQPC="1.241.241.278.025" 
    Level="Always" ProviderName="Bid2Etw_ADONETDIAG_ETW" ProviderGuid="7acdcac8-8947-f88a-e51a-24018f5129ef" ClassicProvider="True" 
    Opcode="18" TaskGuid="7acdcac9-8947-f88a-e51a-24018f5129ef" Channel="0" PointerSize="4" 
    CPU="1" EventIndex="1328680" TemplateType="DynamicTraceEventData"> 
    <PrettyPrint> 
    <Event MSec= "26176,0393" PID="11304" PName="foo" TID="8336" EventName="AdoNetDiag/TextW" ProviderName="Bid2Etw_ADONETDIAG_ETW" ModID="0" msgStr="01:CONNECTED [526D0000]C:\Windows\Microsoft.Net\assembly\GAC_32\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll &quot;System.Data.SNI.1&quot; {C9996FA5-C06F-F20C-8A20-69B3BA392315} 
    "/> 
    </PrettyPrint> 

Il faut donc utiliser WPA pour l'analyse des performances du CPU, disque, fichier io et Perfview pour les événements.